Packages
First we load all the necessary packages for the analysis.
library(psych)
library(corrplot)
library(ggplot2)
library(car)
library(naniar)
library(REdaS)
library(zoo)
library(foreign)
library(lavaan)
library(lavaanPlot)
library(ggcorrplot)
library(lares)
library(MVN)
library(dplyr)
library(knitr)
Data
Here we load the data and select only the necessary value for the analysis.
df <- read.csv2('Case Study III_Structural Equation Modeling.csv', na.strings = '999', sep = ',')
df <- df[, c(1:23, 25:36)]
DT::datatable(df)
Dimensions
To see how much data we have we look at the dimensions of the data.
dim_before_na <- dim(df)
dim_before_na
## [1] 553 35
We see that we have 553 rows and 35 columns.
Summary Statistics
Here we use summary statistics on the data.
DT::datatable(describe(df))
Missing Analysis
As not all further analysis do work with missing values we need to check the existence of them.
gg_miss_var(df, show_pct = TRUE)
We see that there are a lot of columns which have some percentage of values missing. To see if the missing values are in some observations only or if they are spread out between a lot of the observations we use a plot which highlights the missing values in every observation.
naniar::vis_miss(df)
If we look at this plot though we see that the missing values are in a lot of the observations. Most EFA methods do not work well with missing values. For the Confirmatory Analysis we will need to choose a method which can handle missing values.
Dimensions after list wise deletion
Based on the input of the assistant we will use list wise deletion for EFA.
dim_after_na <- dim(na.omit(df))
dim_after_na
## [1] 309 35
na_remove_count <- dim_after_na - dim_before_na
na_remove_count[1] <- abs(na_remove_count[1])
Thus, we remove 244 with list wise deletion which is a lot of observations compared to the size of the whole dataset.
# We do list-wise deletion as asked by the TA
df_listwise <- na.omit(df)
Assumptions for EFA
From Assistant Please only consider variables image1 to image22, and use list wise deletion to handle missing data before starting exploratory factor analysis.
Basic Assumptions
Here we select the images which whe need for the EFA.
df_1 <- df_listwise[,1:22]
Normality - Shapiro Wilk’s test
In this part we check if the data is normally distributed.
apply(df_1, 2, shapiro.test)
## $Im1
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.92373, p-value = 1.851e-11
##
##
## $Im2
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.92499, p-value = 2.411e-11
##
##
## $Im3
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.92371, p-value = 1.844e-11
##
##
## $Im4
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.92014, p-value = 8.873e-12
##
##
## $Im5
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.91233, p-value = 1.921e-12
##
##
## $Im6
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.82674, p-value < 2.2e-16
##
##
## $Im7
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.84612, p-value < 2.2e-16
##
##
## $Im8
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.80379, p-value < 2.2e-16
##
##
## $Im9
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.92158, p-value = 1.187e-11
##
##
## $Im10
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.7981, p-value < 2.2e-16
##
##
## $Im11
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.85448, p-value < 2.2e-16
##
##
## $Im12
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.86819, p-value = 1.38e-15
##
##
## $Im13
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.89122, p-value = 4.669e-14
##
##
## $Im14
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.79446, p-value < 2.2e-16
##
##
## $Im15
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.91767, p-value = 5.414e-12
##
##
## $Im16
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.90488, p-value = 4.853e-13
##
##
## $Im17
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.90676, p-value = 6.818e-13
##
##
## $Im18
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.93189, p-value = 1.081e-10
##
##
## $Im19
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.90393, p-value = 4.097e-13
##
##
## $Im20
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.92824, p-value = 4.834e-11
##
##
## $Im21
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.89126, p-value = 4.7e-14
##
##
## $Im22
##
## Shapiro-Wilk normality test
##
## data: newX[, i]
## W = 0.94596, p-value = 3.211e-09
We reject the null-hypothesis for all variables and thus don’t accept normality of the data.
Multivariate normality - Mardia’s Multivariate Normality Test
To say the data are multivariate normal:
• z-kurtosis < 5 (Bentler, 2006) and the P-value should be ≥ 0.05. • The plot should also form a straight line (Arifin, 2015).
MVN::mvn(df_1, mvnTest = "mardia", multivariatePlot = "qq", desc = FALSE)
## $multivariateNormality
## Test Statistic p value Result
## 1 Mardia Skewness 5693.58260956909 0 NO
## 2 Mardia Kurtosis 48.5688465675536 0 NO
## 3 MVN <NA> <NA> NO
##
## $univariateNormality
## Test Variable Statistic p value Normality
## 1 Anderson-Darling Im1 9.2497 <0.001 NO
## 2 Anderson-Darling Im2 9.0183 <0.001 NO
## 3 Anderson-Darling Im3 9.0339 <0.001 NO
## 4 Anderson-Darling Im4 9.6661 <0.001 NO
## 5 Anderson-Darling Im5 10.8951 <0.001 NO
## 6 Anderson-Darling Im6 18.6917 <0.001 NO
## 7 Anderson-Darling Im7 17.3319 <0.001 NO
## 8 Anderson-Darling Im8 21.2033 <0.001 NO
## 9 Anderson-Darling Im9 9.2733 <0.001 NO
## 10 Anderson-Darling Im10 22.1406 <0.001 NO
## 11 Anderson-Darling Im11 16.4825 <0.001 NO
## 12 Anderson-Darling Im12 14.7775 <0.001 NO
## 13 Anderson-Darling Im13 12.4484 <0.001 NO
## 14 Anderson-Darling Im14 21.7494 <0.001 NO
## 15 Anderson-Darling Im15 10.1132 <0.001 NO
## 16 Anderson-Darling Im16 11.4400 <0.001 NO
## 17 Anderson-Darling Im17 10.7737 <0.001 NO
## 18 Anderson-Darling Im18 8.0021 <0.001 NO
## 19 Anderson-Darling Im19 12.4287 <0.001 NO
## 20 Anderson-Darling Im20 7.9905 <0.001 NO
## 21 Anderson-Darling Im21 13.1862 <0.001 NO
## 22 Anderson-Darling Im22 6.1723 <0.001 NO
The data are not normally distributed at multivariate level. Our extraction method PAF can deal with this non-normality.
Multicolinearity
Here we check for multicolinearity in the data. First of all we will do a correlation plot and then a correlation ranking plot.
# Correlation Values Matrix
M <- cor(df_1)
# P-Value
p.mat <- cor_pmat(df_1)
Here we see the correlation plot of the images.
# Correlation Plot
ggcorrplot(M, hc.order = TRUE, type = "lower", lab = TRUE, p.mat = p.mat, sig.level=0.05, lab_size = 2, tl.cex = 10,outline.col = "white", ggtheme = ggplot2::theme_minimal(), colors = c("#823038", "white", "#2596be"))
We see that there are some correlations between the images.
Here we show the highest correlation from the plot before.
# Ranked Cross-Correlations
corr_cross(df_1, # name of dataset
max_pvalue = 0.05, # display only significant correlations (at 5% level)
top = 9 # display top 10 couples of variables (by correlation coefficient)
)
As we can see, We have some multicolinearity amongst the variables, at least 6 variables can be considered with high-colinearity. Im3+Im4, Im1+Im2, Im6+Im7, Im4+Im5, Im8+Im10 and Im8+Im14.
A guide to appropriate use of Correlation coefficient in medical research
Factors Analysis Assumptions
Here we check the assumptions needed for factor analysis.
Kaiser-Meyer-Olkin test (KMO)
First of all we look at the kaiser-meyer-olkin test which checks the sampling adequacy of all of our images. Thereby a score classifies the adequacy as it can be seen in the picture below.
KMO: Find the Kaiser, Meyer, Olkin Measure of Sampling Adequacy
KMO Index
Now we show the KMO value for all of our images.
KMOTEST <- KMO(M)
sort(KMOTEST$MSAi)
## Im6 Im10 Im14 Im2 Im1 Im7 Im20 Im17
## 0.7791619 0.8192843 0.8206186 0.8275596 0.8316756 0.8342908 0.8369658 0.8459668
## Im18 Im4 Im3 Im13 Im12 Im22 Im21 Im11
## 0.8479170 0.8623498 0.8647696 0.8749019 0.8763560 0.8850423 0.8930068 0.9101259
## Im16 Im8 Im9 Im19 Im15 Im5
## 0.9168866 0.9231784 0.9240378 0.9432565 0.9558911 0.9616355
As one can see most KMO Index are either Meritorious or Marvelous. Im6 is the lowest KMO index being Middling.
KMO Overall Measure of sampling adequacy
From all of these scores a general sampling adequacy can be computed.
KMOTEST$MSA
## [1] 0.8739058
With 0.87 the overall sampling adequacy is very high.
Bartlett’s Test of Sphericity
This test checks if there are correlations between the variables as EFA can not be done if there wouldn’t be.
cortest.bartlett(df_1)
## $chisq
## [1] 5268.134
##
## $p.value
## [1] 0
##
## $df
## [1] 231
The test says that EFA can be done as the test indicates a p-value of 0 (P-value = 0) and thus we can reject the null hypothesis that the correlation matrix look like the identity matrix.
Exploratory Factor analysis
Now we do an exploratory factor analysis of our images.
Determine the number of factors
To determine the number of factors there are five different criterions one can use which are listed below.
- Kaiser’s eigenvalue > 1 rule.
- Cattell’s scree test.
- Parallel analysis.
- Very simple structure (VSS).
- Velicer’s minimum average partial (MAP).
Kaiser’s eigevalue > 1 rule
Factors with eigenvalues > 1 are retained. Eigenvalue can be interpreted as the proportion of the information in a factor. The cut-off of 1 means the factor contains information = 1 item. Thus it is not worthwhile keeping factor with information < 1 item.
fa_result <- fa(df_1, rotate = "varimax", fm = "pa")
factors_kaiser <- sum(fa_result$e.values>1)
According to the Kaiser-Criterion, we would use 6 factors.
Catell’s scree test
For the scree test criterion one needs to look at the plot of the initial eigenvalues against the used factors and choose the value where there is a dent in the curve. Here we did a factor analysis using rotation varimax and plotted the initial eigenvalues
fa_result <- fa(df_1, rotate = "varimax", fm = "pa")
n_factors <- length(fa_result$e.values)
scree <- data.frame(Factor_n = as.factor(1:n_factors), Eigenvalue = fa_result$e.values)
ggplot(scree, aes(x = Factor_n, y = Eigenvalue, group = 1)) +
geom_point() + geom_line() +
xlab("Number of factors") +
ylab("Initial eigenvalue") +
labs( title = "Scree Plot",
subtitle = "(Based on the unreduced correlation matrix)") +
geom_hline(yintercept = 1, color="#2596be") + theme_minimal()
As one can see from the plot the number of factors to choose would either be 7 or 8. Additionally in the scree plot one can see the kaiser criterion which selects all the factors above the blue line of eigenvalue > 1.
Parallel analysis
Here we do a parallel factor analyis.
parallel <- fa.parallel(df_1, fm = "pa", fa = "fa")
## Parallel analysis suggests that the number of factors = 6 and the number of components = NA
print(parallel)
## Call: fa.parallel(x = df_1, fm = "pa", fa = "fa")
## Parallel analysis suggests that the number of factors = 6 and the number of components = NA
##
## Eigen Values of
##
## eigen values of factors
## [1] 8.52 1.78 0.92 0.76 0.65 0.58 0.20 0.13 -0.09 -0.12 -0.21 -0.25
## [13] -0.29 -0.34 -0.37 -0.40 -0.42 -0.42 -0.47 -0.51 -0.54 -0.60
##
## eigen values of simulated factors
## [1] 0.61 0.45 0.39 0.32 0.28 0.22 0.18 0.13 0.10 0.06 0.01 -0.02
## [13] -0.06 -0.09 -0.12 -0.15 -0.20 -0.22 -0.27 -0.30 -0.34 -0.39
##
## eigen values of components
## [1] 9.11 2.46 1.58 1.36 1.26 1.14 0.79 0.73 0.56 0.46 0.36 0.33 0.30 0.28 0.25
## [16] 0.22 0.19 0.18 0.14 0.11 0.10 0.08
##
## eigen values of simulated components
## [1] NA
As we can see in parallel analysis, it also suggest 6 factors, nevertheless, factors up to 7 or 8 can also be considered.
Very simple structure (VSS) criterion and Velicer’s minimum average partial (MAP) criterion
Here we do the VSS and MAP criterion.
vss(df_1, rotate = "varimax", fm = "pa")
##
## Very Simple Structure
## Call: vss(x = df_1, rotate = "varimax", fm = "pa")
## VSS complexity 1 achieves a maximimum of 0.84 with 1 factors
## VSS complexity 2 achieves a maximimum of 0.9 with 2 factors
##
## The Velicer MAP achieves a minimum of 0.04 with 8 factors
## BIC achieves a minimum of -334.88 with 8 factors
## Sample Size adjusted BIC achieves a minimum of -71.64 with 8 factors
##
## Statistics by number of factors
## vss1 vss2 map dof chisq prob sqresid fit RMSEA BIC SABIC complex
## 1 0.84 0.00 0.047 209 2756 0.0e+00 16.0 0.84 0.199 1558 2221 1.0
## 2 0.71 0.90 0.044 188 2143 0.0e+00 10.1 0.90 0.183 1065 1661 1.3
## 3 0.62 0.89 0.045 168 1773 1.0e-265 7.6 0.92 0.176 810 1343 1.4
## 4 0.52 0.84 0.047 149 1455 8.0e-213 5.9 0.94 0.168 600 1073 1.7
## 5 0.44 0.76 0.044 131 1139 3.0e-160 4.3 0.96 0.158 388 803 1.9
## 6 0.39 0.63 0.042 114 636 1.9e-73 3.0 0.97 0.122 -18 344 2.1
## 7 0.39 0.60 0.045 98 296 1.1e-21 2.3 0.98 0.081 -266 45 1.9
## 8 0.37 0.54 0.036 83 141 7.5e-05 1.7 0.98 0.047 -335 -72 2.0
## eChisq SRMR eCRMS eBIC
## 1 2321 0.127 0.134 1122
## 2 1213 0.092 0.102 135
## 3 837 0.077 0.090 -126
## 4 588 0.064 0.080 -266
## 5 364 0.051 0.067 -387
## 6 157 0.033 0.047 -497
## 7 74 0.023 0.035 -488
## 8 19 0.012 0.019 -456
VSS indicates 1 or 2 factors (vss1 largest at 1 and 2 factors), while MAP indicates 8 factors (map smallest at 8 factors).
VSS criterion for the number of factors (in R’s psych package)
Extraction Method
Our data are not normally distributed, hence the extraction method of choice is principal axis factoring (PAF), because it does not assume normality of data (Brown, 2015). The rotation method is varimax.
We run EFA by
- fixing the number of factors as decided from previous step. 6 or 8 factors are reasonable.
- choosing an appropriate extraction method. We use PAF, fm = “pa” (Principal Axis Factoring).
- choosing an appropriate rotation method. We use varimax, rotate = “varimax”.
6 Factors
We will compute the loadings with 6 factors and varimax rotation
What we need to look for:
- Factor loadings
Multiple threshold exist (as many rules of thumb), in our analysis we will use the standard 0.4 cut-off.
What thresholds should I use for factor loading cut-offs?
- Communalities
We use the standard cut-off of 0.5, all above are good.
fa_result <- fa(df_1, nfactors = 6, fm = "pa", rotate = "varimax")
print(fa_result, cut = 0.4, digits = 3)
## Factor Analysis using method = pa
## Call: fa(r = df_1, nfactors = 6, rotate = "varimax", fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA5 PA1 PA2 PA4 PA3 PA6 h2 u2 com
## Im1 0.850 0.841 0.159 1.34
## Im2 0.842 0.796 0.204 1.25
## Im3 0.831 0.874 0.126 1.58
## Im4 0.850 0.893 0.107 1.51
## Im5 0.603 0.524 0.476 1.98
## Im6 0.783 0.708 0.292 1.31
## Im7 0.445 0.739 0.767 0.233 1.75
## Im8 0.725 0.716 0.284 1.72
## Im9 0.480 0.453 0.547 2.80
## Im10 0.821 0.793 0.207 1.37
## Im11 0.537 0.461 0.539 2.24
## Im12 0.796 0.758 0.242 1.42
## Im13 0.748 0.725 0.275 1.64
## Im14 0.794 0.760 0.240 1.43
## Im15 0.589 0.641 0.359 2.86
## Im16 0.468 0.461 0.539 3.00
## Im17 0.439 0.416 0.666 0.334 4.39
## Im18 0.438 0.605 0.395 4.18
## Im19 0.478 0.405 0.541 0.459 3.38
## Im20 0.839 0.775 0.225 1.21
## Im21 0.766 0.680 0.320 1.34
## Im22 0.798 0.804 0.196 1.56
##
## PA5 PA1 PA2 PA4 PA3 PA6
## SS loadings 2.864 2.782 2.608 2.514 2.395 2.080
## Proportion Var 0.130 0.126 0.119 0.114 0.109 0.095
## Cumulative Var 0.130 0.257 0.375 0.489 0.598 0.693
## Proportion Explained 0.188 0.183 0.171 0.165 0.157 0.136
## Cumulative Proportion 0.188 0.370 0.541 0.706 0.864 1.000
##
## Mean item complexity = 2.1
## Test of the hypothesis that 6 factors are sufficient.
##
## df null model = 231 with the objective function = 17.57 with Chi Square = 5268.134
## df of the model are 114 and the objective function was 2.15
##
## The root mean square of the residuals (RMSR) is 0.033
## The df corrected root mean square of the residuals is 0.047
##
## The harmonic n.obs is 309 with the empirical chi square 157.019 with prob < 0.00471
## The total n.obs was 309 with Likelihood Chi Square = 635.908 with prob < 1.9e-73
##
## Tucker Lewis Index of factoring reliability = 0.7871
## RMSEA index = 0.1217 and the 90 % confidence intervals are 0.1128 0.1312
## BIC = -17.693
## Fit based upon off diagonal values = 0.993
## Measures of factor score adequacy
## PA5 PA1 PA2 PA4 PA3
## Correlation of (regression) scores with factors 0.933 0.949 0.930 0.906 0.930
## Multiple R square of scores with factors 0.871 0.900 0.864 0.821 0.865
## Minimum correlation of possible factor scores 0.741 0.800 0.729 0.643 0.731
## PA6
## Correlation of (regression) scores with factors 0.904
## Multiple R square of scores with factors 0.817
## Minimum correlation of possible factor scores 0.635
1. Factor loadings
We can see that we have 3 cross-loadings, Im7, Im17 and Im19.
Cross-Loadings (Measured with Complexity measure: com > 1):
Im17 > Im19 > Im7 > 1
2. Communalities
On the table, it is column h2
Low Communalities are :
Im9 < Im11 < Im16 < 0.5
Removing Im17 (Lowest Communality and High Complexity)
fa_result <- fa(df_1[!names(df_1) %in% c("Im17")], nfactors = 6, fm = "pa", rotate = "varimax")
print(fa_result, cut = 0.4, digits = 3)
## Factor Analysis using method = pa
## Call: fa(r = df_1[!names(df_1) %in% c("Im17")], nfactors = 6, rotate = "varimax",
## fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA1 PA5 PA2 PA3 PA4 PA6 h2 u2 com
## Im1 0.855 0.848 0.1519 1.33
## Im2 0.845 0.799 0.2007 1.25
## Im3 0.839 0.884 0.1159 1.55
## Im4 0.871 0.923 0.0769 1.46
## Im5 0.605 0.526 0.4743 1.97
## Im6 0.860 0.795 0.2050 1.15
## Im7 0.792 0.786 0.2142 1.51
## Im8 0.673 0.429 0.692 0.3077 1.99
## Im9 0.471 0.449 0.5511 2.83
## Im10 0.873 0.878 0.1222 1.32
## Im11 0.548 0.458 0.5423 2.13
## Im12 0.835 0.805 0.1950 1.33
## Im13 0.757 0.738 0.2618 1.63
## Im14 0.830 0.818 0.1820 1.40
## Im15 0.593 0.643 0.3570 2.80
## Im16 0.468 0.461 0.5390 3.00
## Im18 0.421 0.5791 4.38
## Im19 0.480 0.403 0.538 0.4623 3.36
## Im20 0.836 0.770 0.2296 1.21
## Im21 0.773 0.684 0.3157 1.30
## Im22 0.800 0.804 0.1959 1.55
##
## PA1 PA5 PA2 PA3 PA4 PA6
## SS loadings 2.778 2.690 2.447 2.382 2.367 2.057
## Proportion Var 0.132 0.128 0.117 0.113 0.113 0.098
## Cumulative Var 0.132 0.260 0.377 0.490 0.603 0.701
## Proportion Explained 0.189 0.183 0.166 0.162 0.161 0.140
## Cumulative Proportion 0.189 0.371 0.538 0.699 0.860 1.000
##
## Mean item complexity = 1.9
## Test of the hypothesis that 6 factors are sufficient.
##
## df null model = 210 with the objective function = 16.063 with Chi Square = 4821.666
## df of the model are 99 and the objective function was 1.019
##
## The root mean square of the residuals (RMSR) is 0.025
## The df corrected root mean square of the residuals is 0.036
##
## The harmonic n.obs is 309 with the empirical chi square 81.338 with prob < 0.902
## The total n.obs was 309 with Likelihood Chi Square = 301.667 with prob < 2.4e-22
##
## Tucker Lewis Index of factoring reliability = 0.9055
## RMSEA index = 0.0813 and the 90 % confidence intervals are 0.0711 0.0921
## BIC = -265.934
## Fit based upon off diagonal values = 0.996
## Measures of factor score adequacy
## PA1 PA5 PA2 PA3 PA4
## Correlation of (regression) scores with factors 0.935 0.959 0.943 0.931 0.915
## Multiple R square of scores with factors 0.875 0.920 0.889 0.866 0.837
## Minimum correlation of possible factor scores 0.750 0.841 0.777 0.733 0.673
## PA6
## Correlation of (regression) scores with factors 0.924
## Multiple R square of scores with factors 0.854
## Minimum correlation of possible factor scores 0.709
Removing Im18 (Lowest loadings and High Complexity)
fa_result <- fa(df_1[!names(df_1) %in% c("Im17","Im18")], nfactors = 6, fm = "pa", rotate = "varimax")
print(fa_result, cut = 0.4, digits = 3)
## Factor Analysis using method = pa
## Call: fa(r = df_1[!names(df_1) %in% c("Im17", "Im18")], nfactors = 6,
## rotate = "varimax", fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA1 PA5 PA2 PA3 PA4 PA6 h2 u2 com
## Im1 0.859 0.853 0.1475 1.32
## Im2 0.846 0.798 0.2016 1.24
## Im3 0.844 0.895 0.1053 1.55
## Im4 0.873 0.928 0.0722 1.47
## Im5 0.599 0.520 0.4797 2.00
## Im6 0.859 0.787 0.2125 1.14
## Im7 0.810 0.799 0.2007 1.44
## Im8 0.652 0.448 0.685 0.3146 2.12
## Im9 0.461 0.427 0.5731 2.87
## Im10 0.877 0.890 0.1099 1.33
## Im11 0.549 0.458 0.5420 2.14
## Im12 0.853 0.835 0.1654 1.31
## Im13 0.743 0.723 0.2772 1.67
## Im14 0.829 0.823 0.1771 1.42
## Im15 0.597 0.644 0.3563 2.76
## Im16 0.470 0.460 0.5402 2.98
## Im19 0.482 0.535 0.4651 3.33
## Im20 0.838 0.772 0.2276 1.20
## Im21 0.773 0.681 0.3192 1.29
## Im22 0.802 0.805 0.1952 1.54
##
## PA1 PA5 PA2 PA3 PA4 PA6
## SS loadings 2.738 2.565 2.379 2.353 2.223 2.059
## Proportion Var 0.137 0.128 0.119 0.118 0.111 0.103
## Cumulative Var 0.137 0.265 0.384 0.502 0.613 0.716
## Proportion Explained 0.191 0.179 0.166 0.164 0.155 0.144
## Cumulative Proportion 0.191 0.370 0.537 0.701 0.856 1.000
##
## Mean item complexity = 1.8
## Test of the hypothesis that 6 factors are sufficient.
##
## df null model = 190 with the objective function = 15.509 with Chi Square = 4660.488
## df of the model are 85 and the objective function was 0.921
##
## The root mean square of the residuals (RMSR) is 0.025
## The df corrected root mean square of the residuals is 0.037
##
## The harmonic n.obs is 309 with the empirical chi square 72.686 with prob < 0.827
## The total n.obs was 309 with Likelihood Chi Square = 273.088 with prob < 1.36e-21
##
## Tucker Lewis Index of factoring reliability = 0.9046
## RMSEA index = 0.0846 and the 90 % confidence intervals are 0.0736 0.0961
## BIC = -214.246
## Fit based upon off diagonal values = 0.996
## Measures of factor score adequacy
## PA1 PA5 PA2 PA3 PA4
## Correlation of (regression) scores with factors 0.937 0.963 0.946 0.931 0.921
## Multiple R square of scores with factors 0.877 0.927 0.894 0.868 0.847
## Minimum correlation of possible factor scores 0.755 0.855 0.789 0.735 0.695
## PA6
## Correlation of (regression) scores with factors 0.926
## Multiple R square of scores with factors 0.858
## Minimum correlation of possible factor scores 0.717
Removing Im8 (Cross-loadings (High Complexity))
fa_result <- fa(df_1[!names(df_1) %in% c("Im17","Im18","Im8")], nfactors = 6, fm = "pa", rotate = "varimax")
print(fa_result, cut = 0.4, digits = 3)
## Factor Analysis using method = pa
## Call: fa(r = df_1[!names(df_1) %in% c("Im17", "Im18", "Im8")], nfactors = 6,
## rotate = "varimax", fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA1 PA5 PA3 PA4 PA2 PA6 h2 u2 com
## Im1 0.859 0.853 0.1471 1.32
## Im2 0.844 0.796 0.2045 1.24
## Im3 0.845 0.893 0.1070 1.54
## Im4 0.875 0.928 0.0721 1.45
## Im5 0.598 0.519 0.4808 2.00
## Im6 0.884 0.817 0.1827 1.10
## Im7 0.806 0.768 0.2316 1.38
## Im9 0.464 0.427 0.5730 2.80
## Im10 0.882 0.924 0.0763 1.39
## Im11 0.553 0.455 0.5449 2.08
## Im12 0.861 0.841 0.1592 1.28
## Im13 0.740 0.717 0.2833 1.67
## Im14 0.811 0.824 0.1761 1.54
## Im15 0.599 0.645 0.3550 2.72
## Im16 0.472 0.454 0.5461 2.89
## Im19 0.483 0.405 0.534 0.4664 3.27
## Im20 0.836 0.770 0.2303 1.21
## Im21 0.774 0.682 0.3183 1.29
## Im22 0.803 0.807 0.1933 1.54
##
## PA1 PA5 PA3 PA4 PA2 PA6
## SS loadings 2.730 2.578 2.347 2.243 1.942 1.812
## Proportion Var 0.144 0.136 0.124 0.118 0.102 0.095
## Cumulative Var 0.144 0.279 0.403 0.521 0.623 0.719
## Proportion Explained 0.200 0.189 0.172 0.164 0.142 0.133
## Cumulative Proportion 0.200 0.389 0.561 0.725 0.867 1.000
##
## Mean item complexity = 1.8
## Test of the hypothesis that 6 factors are sufficient.
##
## df null model = 171 with the objective function = 14.415 with Chi Square = 4336.563
## df of the model are 72 and the objective function was 0.819
##
## The root mean square of the residuals (RMSR) is 0.025
## The df corrected root mean square of the residuals is 0.039
##
## The harmonic n.obs is 309 with the empirical chi square 67.363 with prob < 0.633
## The total n.obs was 309 with Likelihood Chi Square = 243.141 with prob < 2.01e-20
##
## Tucker Lewis Index of factoring reliability = 0.9011
## RMSEA index = 0.0876 and the 90 % confidence intervals are 0.0758 0.1001
## BIC = -169.66
## Fit based upon off diagonal values = 0.996
## Measures of factor score adequacy
## PA1 PA5 PA3 PA4 PA2
## Correlation of (regression) scores with factors 0.936 0.963 0.931 0.923 0.930
## Multiple R square of scores with factors 0.877 0.928 0.867 0.852 0.866
## Minimum correlation of possible factor scores 0.754 0.855 0.735 0.703 0.731
## PA6
## Correlation of (regression) scores with factors 0.953
## Multiple R square of scores with factors 0.908
## Minimum correlation of possible factor scores 0.816
Removing Im19 (Low Communality and High Complexity)
fa_result <- fa(df_1[!names(df_1) %in% c("Im17","Im18","Im8","Im19")], nfactors = 6, fm = "pa", rotate = "varimax")
print(fa_result, cut = 0.4, digits = 3)
## Factor Analysis using method = pa
## Call: fa(r = df_1[!names(df_1) %in% c("Im17", "Im18", "Im8", "Im19")],
## nfactors = 6, rotate = "varimax", fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA5 PA4 PA3 PA1 PA2 PA6 h2 u2 com
## Im1 0.876 0.894 0.1059 1.34
## Im2 0.863 0.839 0.1610 1.26
## Im3 0.843 0.886 0.1137 1.53
## Im4 0.884 0.938 0.0620 1.43
## Im5 0.615 0.538 0.4624 1.93
## Im6 0.886 0.820 0.1796 1.09
## Im7 0.805 0.765 0.2346 1.37
## Im9 0.464 0.428 0.5717 2.79
## Im10 0.892 0.937 0.0628 1.38
## Im11 0.553 0.454 0.5462 2.06
## Im12 0.866 0.843 0.1568 1.26
## Im13 0.743 0.715 0.2854 1.64
## Im14 0.812 0.822 0.1779 1.53
## Im15 0.560 0.623 0.3767 3.06
## Im16 0.405 0.396 0.6043 3.39
## Im20 0.844 0.779 0.2213 1.19
## Im21 0.773 0.679 0.3214 1.28
## Im22 0.801 0.805 0.1948 1.54
##
## PA5 PA4 PA3 PA1 PA2 PA6
## SS loadings 2.460 2.387 2.343 2.248 1.932 1.792
## Proportion Var 0.137 0.133 0.130 0.125 0.107 0.100
## Cumulative Var 0.137 0.269 0.399 0.524 0.632 0.731
## Proportion Explained 0.187 0.181 0.178 0.171 0.147 0.136
## Cumulative Proportion 0.187 0.368 0.546 0.717 0.864 1.000
##
## Mean item complexity = 1.7
## Test of the hypothesis that 6 factors are sufficient.
##
## df null model = 153 with the objective function = 13.52 with Chi Square = 4071.795
## df of the model are 60 and the objective function was 0.48
##
## The root mean square of the residuals (RMSR) is 0.018
## The df corrected root mean square of the residuals is 0.029
##
## The harmonic n.obs is 309 with the empirical chi square 32.204 with prob < 0.999
## The total n.obs was 309 with Likelihood Chi Square = 142.579 with prob < 1.12e-08
##
## Tucker Lewis Index of factoring reliability = 0.9455
## RMSEA index = 0.0667 and the 90 % confidence intervals are 0.0528 0.0811
## BIC = -201.422
## Fit based upon off diagonal values = 0.998
## Measures of factor score adequacy
## PA5 PA4 PA3 PA1 PA2
## Correlation of (regression) scores with factors 0.966 0.950 0.933 0.925 0.931
## Multiple R square of scores with factors 0.933 0.902 0.870 0.856 0.867
## Minimum correlation of possible factor scores 0.867 0.804 0.740 0.712 0.734
## PA6
## Correlation of (regression) scores with factors 0.958
## Multiple R square of scores with factors 0.919
## Minimum correlation of possible factor scores 0.837
6 Factors - Conclusion
We removed Im17, Im18, Im8 and Im9 until achieving clear loadings separation.
fa.diagram(fa_result, sort = TRUE, adj = 1, rsize = 4, e.size = 0.07, main = "Factors Analysis with 6 factors", digits = 2, l.cex = 1)
Most Factors have good loadings (at least 2 above 0.7), while PA6 has only 2 variables loaded.
8 Factors
We will redo the same analysis with 8 factors this time and using varimax rotation as well.
fa_result <- fa(df_1, nfactors = 8, fm = "pa", rotate = "varimax")
print(fa_result, cut = 0.4, digits = 3)
## Factor Analysis using method = pa
## Call: fa(r = df_1, nfactors = 8, rotate = "varimax", fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA3 PA1 PA2 PA6 PA7 PA5 PA4 PA8 h2 u2 com
## Im1 0.879 0.949 0.0505 1.49
## Im2 0.822 0.832 0.1679 1.50
## Im3 0.803 0.877 0.1232 1.81
## Im4 0.858 0.939 0.0606 1.61
## Im5 0.620 0.568 0.4319 2.09
## Im6 0.845 0.773 0.2268 1.17
## Im7 0.819 0.808 0.1924 1.42
## Im8 0.619 0.474 0.700 0.2995 2.45
## Im9 0.447 0.444 0.5557 3.44
## Im10 0.870 0.887 0.1126 1.37
## Im11 0.552 0.467 0.5327 2.18
## Im12 0.851 0.841 0.1588 1.35
## Im13 0.724 0.730 0.2703 1.88
## Im14 0.850 0.860 0.1396 1.41
## Im15 0.442 0.423 0.668 0.3322 4.90
## Im16 0.732 0.744 0.2559 1.87
## Im17 0.830 0.923 0.0768 1.77
## Im18 0.757 0.785 0.2147 1.83
## Im19 0.561 0.640 0.3605 3.44
## Im20 0.849 0.790 0.2095 1.20
## Im21 0.769 0.684 0.3161 1.33
## Im22 0.797 0.799 0.2012 1.56
##
## PA3 PA1 PA2 PA6 PA7 PA5 PA4 PA8
## SS loadings 2.441 2.394 2.308 2.244 2.110 2.100 1.718 1.395
## Proportion Var 0.111 0.109 0.105 0.102 0.096 0.095 0.078 0.063
## Cumulative Var 0.111 0.220 0.325 0.427 0.523 0.618 0.696 0.760
## Proportion Explained 0.146 0.143 0.138 0.134 0.126 0.126 0.103 0.083
## Cumulative Proportion 0.146 0.289 0.427 0.562 0.688 0.814 0.917 1.000
##
## Mean item complexity = 2
## Test of the hypothesis that 8 factors are sufficient.
##
## df null model = 231 with the objective function = 17.57 with Chi Square = 5268.134
## df of the model are 83 and the objective function was 0.479
##
## The root mean square of the residuals (RMSR) is 0.012
## The df corrected root mean square of the residuals is 0.019
##
## The harmonic n.obs is 309 with the empirical chi square 19.471 with prob < 1
## The total n.obs was 309 with Likelihood Chi Square = 140.985 with prob < 7.46e-05
##
## Tucker Lewis Index of factoring reliability = 0.9674
## RMSEA index = 0.0474 and the 90 % confidence intervals are 0.0337 0.0609
## BIC = -334.883
## Fit based upon off diagonal values = 0.999
## Measures of factor score adequacy
## PA3 PA1 PA2 PA6 PA7
## Correlation of (regression) scores with factors 0.934 0.958 0.947 0.920 0.924
## Multiple R square of scores with factors 0.872 0.917 0.898 0.846 0.854
## Minimum correlation of possible factor scores 0.745 0.834 0.795 0.692 0.709
## PA5 PA4 PA8
## Correlation of (regression) scores with factors 0.964 0.943 0.838
## Multiple R square of scores with factors 0.930 0.890 0.703
## Minimum correlation of possible factor scores 0.860 0.780 0.405
1. Factor loadings
We can see that we have 2 cross-loadings, Im8 and Im15. Therefore 1 less cross-loadings than 6 Factors Analysis.
Cross-Loadings (Measured with Complexity measure: com > 1):
Im15 > Im8 > 1
2. Communalities
On the table, it is column h2
Low Communalities are :
Im9 < Im11 < 0.5 (same low items communalities than in 6 Factor analysis )
Removing Im15 (Low Communality and High Complexity)
fa_result <- fa(df_1[!names(df_1) %in% c("Im15")], nfactors = 8, fm = "pa", rotate = "varimax")
print(fa_result, cut = 0.4, digits = 3)
## Factor Analysis using method = pa
## Call: fa(r = df_1[!names(df_1) %in% c("Im15")], nfactors = 8, rotate = "varimax",
## fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA3 PA1 PA2 PA5 PA7 PA6 PA4 PA8 h2 u2 com
## Im1 0.864 0.935 0.0647 1.55
## Im2 0.825 0.845 0.1553 1.52
## Im3 0.804 0.878 0.1225 1.80
## Im4 0.856 0.936 0.0639 1.61
## Im5 0.625 0.573 0.4275 2.06
## Im6 0.850 0.781 0.2190 1.16
## Im7 0.817 0.805 0.1952 1.42
## Im8 0.623 0.472 0.698 0.3019 2.41
## Im9 0.444 0.442 0.5578 3.46
## Im10 0.881 0.902 0.0979 1.35
## Im11 0.556 0.471 0.5294 2.14
## Im12 0.852 0.841 0.1587 1.34
## Im13 0.722 0.725 0.2749 1.88
## Im14 0.837 0.844 0.1564 1.43
## Im16 0.675 0.677 0.3234 2.11
## Im17 0.826 0.912 0.0883 1.75
## Im18 0.765 0.794 0.2060 1.80
## Im19 0.609 0.686 0.3136 3.02
## Im20 0.854 0.796 0.2037 1.19
## Im21 0.770 0.683 0.3169 1.32
## Im22 0.796 0.795 0.2051 1.55
##
## PA3 PA1 PA2 PA5 PA7 PA6 PA4 PA8
## SS loadings 2.395 2.369 2.303 2.152 2.086 1.841 1.699 1.174
## Proportion Var 0.114 0.113 0.110 0.102 0.099 0.088 0.081 0.056
## Cumulative Var 0.114 0.227 0.336 0.439 0.538 0.626 0.707 0.763
## Proportion Explained 0.150 0.148 0.144 0.134 0.130 0.115 0.106 0.073
## Cumulative Proportion 0.150 0.297 0.441 0.575 0.706 0.821 0.927 1.000
##
## Mean item complexity = 1.8
## Test of the hypothesis that 8 factors are sufficient.
##
## df null model = 210 with the objective function = 16.523 with Chi Square = 4959.748
## df of the model are 70 and the objective function was 0.434
##
## The root mean square of the residuals (RMSR) is 0.012
## The df corrected root mean square of the residuals is 0.02
##
## The harmonic n.obs is 309 with the empirical chi square 17.262 with prob < 1
## The total n.obs was 309 with Likelihood Chi Square = 127.971 with prob < 2.9e-05
##
## Tucker Lewis Index of factoring reliability = 0.9627
## RMSEA index = 0.0517 and the 90 % confidence intervals are 0.0374 0.0659
## BIC = -273.363
## Fit based upon off diagonal values = 0.999
## Measures of factor score adequacy
## PA3 PA1 PA2 PA5 PA7
## Correlation of (regression) scores with factors 0.935 0.954 0.949 0.919 0.925
## Multiple R square of scores with factors 0.873 0.911 0.900 0.844 0.856
## Minimum correlation of possible factor scores 0.747 0.821 0.800 0.688 0.712
## PA6 PA4 PA8
## Correlation of (regression) scores with factors 0.957 0.938 0.806
## Multiple R square of scores with factors 0.917 0.881 0.649
## Minimum correlation of possible factor scores 0.834 0.761 0.299
Removing Im8 (Low Communality and High Complexity)
fa_result <- fa(df_1[!names(df_1) %in% c("Im15","Im8")], nfactors = 8, fm = "pa", rotate = "varimax")
print(fa_result, cut = 0.4, digits = 3)
## Factor Analysis using method = pa
## Call: fa(r = df_1[!names(df_1) %in% c("Im15", "Im8")], nfactors = 8,
## rotate = "varimax", fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA3 PA1 PA4 PA5 PA6 PA2 PA7 PA8 h2 u2 com
## Im1 0.898 0.990 0.0105 1.49
## Im2 0.792 0.800 0.1997 1.61
## Im3 0.800 0.875 0.1250 1.82
## Im4 0.855 0.937 0.0632 1.62
## Im5 0.627 0.575 0.4248 2.06
## Im6 0.885 0.827 0.1732 1.12
## Im7 0.804 0.766 0.2335 1.39
## Im9 0.443 0.440 0.5599 3.42
## Im10 0.914 0.980 0.0201 1.37
## Im11 0.562 0.468 0.5320 2.07
## Im12 0.857 0.845 0.1553 1.32
## Im13 0.722 0.723 0.2773 1.86
## Im14 0.780 0.789 0.2110 1.64
## Im16 0.616 0.601 0.3986 2.35
## Im17 0.864 0.969 0.0311 1.66
## Im18 0.730 0.752 0.2484 1.92
## Im19 0.689 0.758 0.2415 2.40
## Im20 0.852 0.794 0.2064 1.19
## Im21 0.770 0.683 0.3173 1.32
## Im22 0.798 0.798 0.2024 1.55
##
## PA3 PA1 PA4 PA5 PA6 PA2 PA7 PA8
## SS loadings 2.384 2.345 2.169 1.936 1.832 1.788 1.698 1.216
## Proportion Var 0.119 0.117 0.108 0.097 0.092 0.089 0.085 0.061
## Cumulative Var 0.119 0.236 0.345 0.442 0.533 0.623 0.708 0.768
## Proportion Explained 0.155 0.153 0.141 0.126 0.119 0.116 0.110 0.079
## Cumulative Proportion 0.155 0.308 0.449 0.575 0.694 0.810 0.921 1.000
##
## Mean item complexity = 1.8
## Test of the hypothesis that 8 factors are sufficient.
##
## df null model = 190 with the objective function = 15.431 with Chi Square = 4636.932
## df of the model are 58 and the objective function was 0.36
##
## The root mean square of the residuals (RMSR) is 0.011
## The df corrected root mean square of the residuals is 0.021
##
## The harmonic n.obs is 309 with the empirical chi square 15.22 with prob < 1
## The total n.obs was 309 with Likelihood Chi Square = 106.281 with prob < 0.000114
##
## Tucker Lewis Index of factoring reliability = 0.9638
## RMSEA index = 0.0518 and the 90 % confidence intervals are 0.036 0.0674
## BIC = -226.253
## Fit based upon off diagonal values = 0.999
## Measures of factor score adequacy
## PA3 PA1 PA4 PA5 PA6
## Correlation of (regression) scores with factors 0.934 0.955 0.922 0.931 0.989
## Multiple R square of scores with factors 0.873 0.911 0.850 0.867 0.978
## Minimum correlation of possible factor scores 0.746 0.823 0.700 0.735 0.955
## PA2 PA7 PA8
## Correlation of (regression) scores with factors 0.980 0.973 0.818
## Multiple R square of scores with factors 0.961 0.947 0.669
## Minimum correlation of possible factor scores 0.922 0.895 0.338
8 Factors - Conclusion
We removed Im15, Im8 until achieving clear loadings separation. Therefore we removed 2 variables less than 6 Factors Analysis done previously
fa.diagram(fa_result, sort = TRUE, adj = 1, rsize = 4, e.size = 0.07, main = "Factors Analysis with 8 factors", digits = 2, l.cex = 1)
Most Factors have nice loadings (at least 2 above 0.7), but PA8 has 2 variables with only 0.62-0.69 loadings (but close to 0.7).
Deciding between 6 or 8 Factors
Here we show the results of the final factor analysis with 6 and 8 Factors and then evaluate how we decided between the two solutions.
fa_result6 <- fa(df_1[!names(df_1) %in% c("Im17","Im18","Im8","Im19")], nfactors = 6, fm = "pa", rotate = "varimax")
fa_result8 <- fa(df_1[!names(df_1) %in% c("Im15","Im8")], nfactors = 8, fm = "pa", rotate = "varimax")
fa_result6
## Factor Analysis using method = pa
## Call: fa(r = df_1[!names(df_1) %in% c("Im17", "Im18", "Im8", "Im19")],
## nfactors = 6, rotate = "varimax", fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA5 PA4 PA3 PA1 PA2 PA6 h2 u2 com
## Im1 0.19 0.88 0.22 0.18 0.07 0.08 0.89 0.106 1.3
## Im2 0.22 0.86 0.16 0.10 0.07 0.08 0.84 0.161 1.3
## Im3 0.84 0.21 0.22 0.22 0.12 0.14 0.89 0.114 1.5
## Im4 0.88 0.21 0.18 0.20 0.14 0.13 0.94 0.062 1.4
## Im5 0.62 0.24 0.18 0.20 0.08 0.15 0.54 0.462 1.9
## Im6 0.09 0.06 0.07 0.06 0.89 0.12 0.82 0.180 1.1
## Im7 0.06 0.08 0.11 0.11 0.80 0.29 0.77 0.235 1.4
## Im9 0.19 0.13 0.12 0.36 0.46 0.11 0.43 0.572 2.8
## Im10 0.19 0.10 0.05 0.21 0.23 0.89 0.94 0.063 1.4
## Im11 0.18 0.11 0.18 0.55 0.09 0.25 0.45 0.546 2.1
## Im12 0.17 0.15 0.10 0.87 0.10 0.16 0.84 0.157 1.3
## Im13 0.22 0.24 0.19 0.74 0.14 0.07 0.71 0.285 1.6
## Im14 0.17 0.14 0.06 0.20 0.27 0.81 0.82 0.178 1.5
## Im15 0.26 0.56 0.26 0.37 0.17 0.10 0.62 0.377 3.1
## Im16 0.35 0.40 0.13 0.20 0.06 0.22 0.40 0.604 3.4
## Im20 0.14 0.11 0.84 0.17 0.03 0.04 0.78 0.221 1.2
## Im21 0.16 0.18 0.77 0.12 0.08 0.04 0.68 0.321 1.3
## Im22 0.21 0.24 0.80 0.14 0.19 0.06 0.81 0.195 1.5
##
## PA5 PA4 PA3 PA1 PA2 PA6
## SS loadings 2.46 2.39 2.34 2.25 1.93 1.79
## Proportion Var 0.14 0.13 0.13 0.12 0.11 0.10
## Cumulative Var 0.14 0.27 0.40 0.52 0.63 0.73
## Proportion Explained 0.19 0.18 0.18 0.17 0.15 0.14
## Cumulative Proportion 0.19 0.37 0.55 0.72 0.86 1.00
##
## Mean item complexity = 1.7
## Test of the hypothesis that 6 factors are sufficient.
##
## df null model = 153 with the objective function = 13.52 with Chi Square = 4071.79
## df of the model are 60 and the objective function was 0.48
##
## The root mean square of the residuals (RMSR) is 0.02
## The df corrected root mean square of the residuals is 0.03
##
## The harmonic n.obs is 309 with the empirical chi square 32.2 with prob < 1
## The total n.obs was 309 with Likelihood Chi Square = 142.58 with prob < 1.1e-08
##
## Tucker Lewis Index of factoring reliability = 0.946
## RMSEA index = 0.067 and the 90 % confidence intervals are 0.053 0.081
## BIC = -201.42
## Fit based upon off diagonal values = 1
## Measures of factor score adequacy
## PA5 PA4 PA3 PA1 PA2 PA6
## Correlation of (regression) scores with factors 0.97 0.95 0.93 0.93 0.93 0.96
## Multiple R square of scores with factors 0.93 0.90 0.87 0.86 0.87 0.92
## Minimum correlation of possible factor scores 0.87 0.80 0.74 0.71 0.73 0.84
fa_result8
## Factor Analysis using method = pa
## Call: fa(r = df_1[!names(df_1) %in% c("Im15", "Im8")], nfactors = 8,
## rotate = "varimax", fm = "pa")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PA3 PA1 PA4 PA5 PA6 PA2 PA7 PA8 h2 u2 com
## Im1 0.23 0.18 0.19 0.07 0.90 0.08 0.13 0.18 0.99 0.010 1.5
## Im2 0.18 0.21 0.11 0.07 0.79 0.08 0.17 0.21 0.80 0.200 1.6
## Im3 0.22 0.80 0.20 0.11 0.14 0.13 0.17 0.26 0.88 0.125 1.8
## Im4 0.18 0.86 0.20 0.13 0.15 0.13 0.16 0.23 0.94 0.063 1.6
## Im5 0.18 0.63 0.19 0.06 0.21 0.17 0.18 0.07 0.58 0.425 2.1
## Im6 0.07 0.08 0.05 0.88 0.04 0.12 0.11 0.05 0.83 0.173 1.1
## Im7 0.11 0.06 0.11 0.80 0.06 0.28 0.07 0.06 0.77 0.234 1.4
## Im9 0.12 0.17 0.33 0.44 0.08 0.12 0.26 0.06 0.44 0.560 3.4
## Im10 0.05 0.16 0.20 0.22 0.05 0.91 0.05 0.15 0.98 0.020 1.4
## Im11 0.18 0.18 0.56 0.09 0.09 0.25 0.08 0.06 0.47 0.532 2.1
## Im12 0.10 0.15 0.86 0.09 0.09 0.14 0.14 0.15 0.84 0.155 1.3
## Im13 0.18 0.19 0.72 0.12 0.18 0.08 0.26 0.11 0.72 0.277 1.9
## Im14 0.06 0.16 0.20 0.28 0.11 0.78 0.05 0.14 0.79 0.211 1.6
## Im16 0.12 0.26 0.15 0.05 0.24 0.19 0.15 0.62 0.60 0.399 2.3
## Im17 0.20 0.20 0.22 0.17 0.19 0.06 0.86 0.17 0.97 0.031 1.7
## Im18 0.19 0.24 0.24 0.16 0.14 0.06 0.73 0.13 0.75 0.248 1.9
## Im19 0.16 0.28 0.20 0.14 0.25 0.16 0.18 0.69 0.76 0.242 2.4
## Im20 0.85 0.12 0.17 0.03 0.07 0.03 0.07 0.12 0.79 0.206 1.2
## Im21 0.77 0.15 0.11 0.08 0.15 0.04 0.15 0.06 0.68 0.317 1.3
## Im22 0.80 0.20 0.13 0.18 0.20 0.07 0.15 0.07 0.80 0.202 1.5
##
## PA3 PA1 PA4 PA5 PA6 PA2 PA7 PA8
## SS loadings 2.38 2.35 2.17 1.94 1.83 1.79 1.70 1.22
## Proportion Var 0.12 0.12 0.11 0.10 0.09 0.09 0.08 0.06
## Cumulative Var 0.12 0.24 0.34 0.44 0.53 0.62 0.71 0.77
## Proportion Explained 0.16 0.15 0.14 0.13 0.12 0.12 0.11 0.08
## Cumulative Proportion 0.16 0.31 0.45 0.57 0.69 0.81 0.92 1.00
##
## Mean item complexity = 1.8
## Test of the hypothesis that 8 factors are sufficient.
##
## df null model = 190 with the objective function = 15.43 with Chi Square = 4636.93
## df of the model are 58 and the objective function was 0.36
##
## The root mean square of the residuals (RMSR) is 0.01
## The df corrected root mean square of the residuals is 0.02
##
## The harmonic n.obs is 309 with the empirical chi square 15.22 with prob < 1
## The total n.obs was 309 with Likelihood Chi Square = 106.28 with prob < 0.00011
##
## Tucker Lewis Index of factoring reliability = 0.964
## RMSEA index = 0.052 and the 90 % confidence intervals are 0.036 0.067
## BIC = -226.25
## Fit based upon off diagonal values = 1
## Measures of factor score adequacy
## PA3 PA1 PA4 PA5 PA6 PA2
## Correlation of (regression) scores with factors 0.93 0.95 0.92 0.93 0.99 0.98
## Multiple R square of scores with factors 0.87 0.91 0.85 0.87 0.98 0.96
## Minimum correlation of possible factor scores 0.75 0.82 0.70 0.73 0.96 0.92
## PA7 PA8
## Correlation of (regression) scores with factors 0.97 0.82
## Multiple R square of scores with factors 0.95 0.67
## Minimum correlation of possible factor scores 0.89 0.34
We can see that for 6 Factors Analysis, we obtain a cumulative proportion variance of 0.73. In total, the extracted factors explain 73% of the variance.
For 8 Factors Analysis, we obtain a cumulative proportion variance of 0.77. In total, the extracted factors explain 77% of the variance.
BIC is lower with 8 factors than 6 factors, therefore may allow more generalization in future sample.
We should also check the root mean square error of approximation (RMSEA). An better value should be closer to 0. In 6 Factors Analysis we have 0.067 and in 8 Factors Analysis we have 0.052 (closer to 0).
Finally, we must check the Tucker-Lewis Index (TLI). An acceptable value must be over 0.9. In 6 Factors Analysis we have 0.946 and in 8 Factors Analysis we have 0.964.
Therefore 8 Factors Analysis is overall better, with better BIC, RMSR and TLI and also explain more the total variance with 77%.
Choosing the Optimal Number of Factors in Exploratory Factor Analysis: A Model Selection Perspective
Labeling 8 Factors
Here we label the 8 factors according to the questions asked to receive the images which load on to the factor
colnames(fa_result8$loadings) <- c("Shopping Experience", "Store Decoration","Luxury Brands","French Culture","Product Assortment","Gourmet Food","Trendiness","Professionalism")
Shopping_Experience <- c("Im20","Im21","Im22")
Store_Decoration <- c("Im3","Im4","Im5")
Luxury_Brands <- c("Im11","Im12","Im13")
French_Culture <- c("Im6","Im7","Im9")
Product_Assortment <- c("Im1","Im2")
Gourmet_Food <- c("Im10","Im14")
Trendiness <- c("Im17","Im18")
Professionalism <- c("Im16","Im19")
And after renaming the factors we can now plot the loadings of the factors.
fa.diagram(fa_result8, sort = TRUE, adj = 1, rsize = 4, e.size = 0.061, main = "Conclusion of Factors Analysis - with 8 labeled factors", digits = 2, l.cex = 1)
Internal consistency reliability
Our next step is to assess the internal consistency reliability of the factors that were identified through the EFA. To accomplish this, we will use Cronbach’s alpha. We will evaluate the reliability of each factor individually by incorporating only the chosen items for that particular factor.
We need to look at:
1. Cronbach’s alpha (raw_alpha) which indicates the internal consistency reliability as well as 2. Corrected item-total correlation (average_r)
The interpretation is detailed as follows (DeVellis, 2012, pp. 95–96):
Shopping Experience
alpha.pa1 <- psych::alpha(df_1[Shopping_Experience])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.8947029 0.8951786 0.8514649 0.7400356 8.54004 0.01029882 4.677454 1.341113
## median_r
## 0.7296095
raw_alpha is over 0.7 and average items correlation is above 0.5
Store Decoration
alpha.pa1 <- psych::alpha(df_1[Store_Decoration])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.9080535 0.9080107 0.8910999 0.7669149 9.870833 0.009512795 4.909385 1.251142
## median_r
## 0.713708
raw_alpha is over 0.7 and average items correlation is above 0.5
Luxury Brands
alpha.pa1 <- psych::alpha(df_1[Luxury_Brands])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.8362383 0.8369592 0.7932492 0.631152 5.133432 0.01631641 5.549083 1.033799
## median_r
## 0.5951255
raw_alpha is over 0.7 and average items correlation is above 0.5
French Culture
alpha.pa1 <- psych::alpha(df_1[French_Culture])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.7974734 0.8043581 0.7661015 0.5781409 4.111379 0.02082013 5.532902 1.061296
## median_r
## 0.4812433
raw_alpha is over 0.7 and average items correlation is above 0.5
Product Assortment
alpha.pa1 <- psych::alpha(df_1[Product_Assortment])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.9370045 0.9377564 0.8828073 0.8828073 15.06591 0.007118763 4.847896 1.27965
## median_r
## 0.8828073
raw_alpha is over 0.7 and average items correlation is above 0.5
Gourmet Food
alpha.pa1 <- psych::alpha(df_1[Gourmet_Food])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.9327078 0.9327084 0.8739021 0.8739021 13.8607 0.007656198 6.106796 0.8498963
## median_r
## 0.8739021
raw_alpha is over 0.7 and average items correlation is above 0.5
Trendiness
alpha.pa1 <- psych::alpha(df_1[Trendiness])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.9155341 0.9175086 0.8475898 0.8475898 11.12248 0.009476765 4.737864 1.287763
## median_r
## 0.8475898
raw_alpha is over 0.7 and average items correlation is above 0.5
Professionalism
alpha.pa1 <- psych::alpha(df_1[Professionalism])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.8027054 0.8029503 0.6707744 0.6707744 4.074861 0.02242662 5.082524 1.119696
## median_r
## 0.6707744
raw_alpha is over 0.7 and average items correlation is above 0.5
Our assessment suggests that the factors extracted are reliable, and therefore it is advisable to retain all the items related to these factors.
Dimensions by which Galeries Layfayette is perceived?
Here we show the dimensions by which galeries layfayette is perceived according to EFA.
fa.diagram(fa_result8, sort = TRUE, adj = 1, rsize = 4, e.size = 0.061, main = "Galeries Lafayette - Perception Dimensions", digits = 2, l.cex = 1)
Dimensions Definitions:
Product Assortment: This group pertains to the variety and range of products offered by the store.
Store Decoration: This group pertains to the aesthetic elements of the store’s interior and exterior, such as the artistic and creative decoration of the sales area, and the appealing arrangement of shop windows.
French Culture: This group pertains to elements of French culture, such as French savoir-vivre, fashion.
Gourmet Food: This group pertains to high-quality offered by the store.
Luxury Brands: This group pertains to the presence of luxury and designer brands in the store.
Professionalism: This group pertains to elements of professionalism, such as the store’s professional appearance towards customers and professional organization.
Trendiness: This group pertains to the store’s ability to stay current and up-to-date with the latest trends in the market.
Shopping Experience: This group pertains to the overall shopping experience, including elements such as relaxing shopping, a great place to stroll, and an intimate shop atmosphere.
Confirmatory Factor Analysis
In this part we will do a confirmatory factor analysis which is based on the results of EFA from before.
From Assistant For confirmatory factor analysis (CFA) and structural equation modeling (SEM), please use the raw data (which includes the missing values) to perform CFA and SEM, and use maximum likelihood (ML) to handle the missing data.
df <- read.csv2('Case Study III_Structural Equation Modeling.csv', na.strings = '999', sep = ',')
Summary of CFA Model with 8 Factors
Here we fit the CFA model and look at its summary.
model_CFA <-"
Shopping_Experience =~ Im20+Im22+Im21
Store_Decoration =~ Im3+Im4+Im5
Luxury_Brands =~ Im12+Im13+Im11
French_Culture =~ Im6+Im7+Im9
Product_Assortment =~ Im1+Im2
Gourmet_Food =~ Im10+Im14
Trendiness =~ Im17+Im18
Professionalism =~ Im16+Im19"
fit_CFA <- lavaan::cfa(model_CFA, data=df, missing="ML")
summary(fit_CFA,fit.measures=TRUE, standardized=TRUE)
## lavaan 0.6.15 ended normally after 102 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 88
##
## Number of observations 553
## Number of missing patterns 82
##
## Model Test User Model:
##
## Test statistic 383.534
## Degrees of freedom 142
## P-value (Chi-square) 0.000
##
## Model Test Baseline Model:
##
## Test statistic 7789.413
## Degrees of freedom 190
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.968
## Tucker-Lewis Index (TLI) 0.957
##
## Robust Comparative Fit Index (CFI) 0.968
## Robust Tucker-Lewis Index (TLI) 0.957
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -13802.030
## Loglikelihood unrestricted model (H1) -13610.263
##
## Akaike (AIC) 27780.060
## Bayesian (BIC) 28159.811
## Sample-size adjusted Bayesian (SABIC) 27880.460
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.055
## 90 Percent confidence interval - lower 0.049
## 90 Percent confidence interval - upper 0.062
## P-value H_0: RMSEA <= 0.050 0.087
## P-value H_0: RMSEA >= 0.080 0.000
##
## Robust RMSEA 0.057
## 90 Percent confidence interval - lower 0.050
## 90 Percent confidence interval - upper 0.064
## P-value H_0: Robust RMSEA <= 0.050 0.055
## P-value H_0: Robust RMSEA >= 0.080 0.000
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.052
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Shopping_Experience =~
## Im20 1.000 1.264 0.845
## Im22 1.060 0.047 22.590 0.000 1.341 0.877
## Im21 0.849 0.041 20.818 0.000 1.073 0.783
## Store_Decoration =~
## Im3 1.000 1.236 0.937
## Im4 1.056 0.025 42.717 0.000 1.305 0.969
## Im5 0.818 0.034 23.813 0.000 1.011 0.760
## Luxury_Brands =~
## Im12 1.000 0.991 0.872
## Im13 1.038 0.050 20.653 0.000 1.029 0.855
## Im11 0.709 0.047 15.048 0.000 0.703 0.615
## French_Culture =~
## Im6 1.000 1.002 0.835
## Im7 1.107 0.050 22.219 0.000 1.109 0.919
## Im9 0.789 0.057 13.916 0.000 0.790 0.585
## Product_Assortment =~
## Im1 1.000 1.305 0.980
## Im2 0.885 0.033 27.039 0.000 1.155 0.899
## Gourmet_Food =~
## Im10 1.000 0.812 0.924
## Im14 1.014 0.035 28.587 0.000 0.823 0.952
## Trendiness =~
## Im17 1.000 1.204 0.968
## Im18 0.995 0.041 24.250 0.000 1.197 0.857
## Professionalism =~
## Im16 1.000 0.922 0.766
## Im19 1.045 0.061 17.188 0.000 0.963 0.856
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Shopping_Experience ~~
## Store_Decoratn 0.729 0.082 8.911 0.000 0.467 0.467
## Luxury_Brands 0.524 0.068 7.693 0.000 0.418 0.418
## French_Culture 0.446 0.066 6.749 0.000 0.352 0.352
## Prdct_Assrtmnt 0.739 0.085 8.728 0.000 0.448 0.448
## Gourmet_Food 0.303 0.051 5.951 0.000 0.295 0.295
## Trendiness 0.786 0.081 9.715 0.000 0.517 0.517
## Professionalsm 0.557 0.069 8.091 0.000 0.478 0.478
## Store_Decoration ~~
## Luxury_Brands 0.577 0.064 8.957 0.000 0.471 0.471
## French_Culture 0.449 0.063 7.099 0.000 0.363 0.363
## Prdct_Assrtmnt 0.711 0.079 9.032 0.000 0.440 0.440
## Gourmet_Food 0.418 0.050 8.401 0.000 0.417 0.417
## Trendiness 0.770 0.076 10.141 0.000 0.517 0.517
## Professionalsm 0.744 0.071 10.469 0.000 0.653 0.653
## Luxury_Brands ~~
## French_Culture 0.337 0.052 6.460 0.000 0.340 0.340
## Prdct_Assrtmnt 0.618 0.068 9.135 0.000 0.478 0.478
## Gourmet_Food 0.364 0.043 8.499 0.000 0.452 0.452
## Trendiness 0.676 0.065 10.423 0.000 0.566 0.566
## Professionalsm 0.483 0.055 8.826 0.000 0.529 0.529
## French_Culture ~~
## Prdct_Assrtmnt 0.321 0.063 5.121 0.000 0.246 0.246
## Gourmet_Food 0.490 0.047 10.536 0.000 0.603 0.603
## Trendiness 0.439 0.062 7.087 0.000 0.364 0.364
## Professionalsm 0.360 0.052 6.937 0.000 0.391 0.391
## Product_Assortment ~~
## Gourmet_Food 0.328 0.050 6.581 0.000 0.309 0.309
## Trendiness 0.817 0.079 10.362 0.000 0.519 0.519
## Professionalsm 0.718 0.072 9.961 0.000 0.597 0.597
## Gourmet_Food ~~
## Trendiness 0.318 0.047 6.804 0.000 0.325 0.325
## Professionalsm 0.373 0.043 8.600 0.000 0.498 0.498
## Trendiness ~~
## Professionalsm 0.667 0.066 10.043 0.000 0.601 0.601
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im20 4.672 0.064 73.178 0.000 4.672 3.123
## .Im22 4.279 0.065 65.401 0.000 4.279 2.799
## .Im21 5.139 0.058 87.970 0.000 5.139 3.751
## .Im3 4.995 0.056 88.565 0.000 4.995 3.786
## .Im4 4.999 0.057 86.988 0.000 4.999 3.712
## .Im5 5.035 0.057 87.848 0.000 5.035 3.787
## .Im12 5.666 0.049 116.093 0.000 5.666 4.983
## .Im13 5.448 0.052 105.619 0.000 5.448 4.524
## .Im11 5.653 0.049 115.273 0.000 5.653 4.943
## .Im6 5.826 0.051 113.774 0.000 5.826 4.856
## .Im7 5.751 0.052 111.068 0.000 5.751 4.766
## .Im9 5.075 0.058 87.408 0.000 5.075 3.756
## .Im1 4.790 0.057 84.203 0.000 4.790 3.597
## .Im2 4.857 0.055 88.356 0.000 4.857 3.779
## .Im10 6.100 0.037 162.799 0.000 6.100 6.937
## .Im14 6.138 0.037 165.865 0.000 6.138 7.093
## .Im17 5.025 0.053 94.529 0.000 5.025 4.041
## .Im18 4.595 0.060 76.455 0.000 4.595 3.287
## .Im16 5.135 0.052 99.150 0.000 5.135 4.269
## .Im19 5.145 0.048 106.954 0.000 5.145 4.574
## Shoppng_Exprnc 0.000 0.000 0.000
## Store_Decoratn 0.000 0.000 0.000
## Luxury_Brands 0.000 0.000 0.000
## French_Culture 0.000 0.000 0.000
## Prdct_Assrtmnt 0.000 0.000 0.000
## Gourmet_Food 0.000 0.000 0.000
## Trendiness 0.000 0.000 0.000
## Professionalsm 0.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im20 0.639 0.061 10.445 0.000 0.639 0.285
## .Im22 0.540 0.063 8.515 0.000 0.540 0.231
## .Im21 0.726 0.057 12.672 0.000 0.726 0.387
## .Im3 0.213 0.024 8.760 0.000 0.213 0.123
## .Im4 0.109 0.024 4.524 0.000 0.109 0.060
## .Im5 0.747 0.049 15.217 0.000 0.747 0.422
## .Im12 0.310 0.040 7.833 0.000 0.310 0.239
## .Im13 0.390 0.045 8.771 0.000 0.390 0.269
## .Im11 0.814 0.055 14.803 0.000 0.814 0.622
## .Im6 0.436 0.042 10.443 0.000 0.436 0.303
## .Im7 0.227 0.042 5.343 0.000 0.227 0.156
## .Im9 1.201 0.080 15.032 0.000 1.201 0.658
## .Im1 0.070 0.050 1.383 0.167 0.070 0.039
## .Im2 0.317 0.044 7.242 0.000 0.317 0.192
## .Im10 0.113 0.019 5.935 0.000 0.113 0.146
## .Im14 0.071 0.019 3.764 0.000 0.071 0.094
## .Im17 0.096 0.045 2.153 0.031 0.096 0.062
## .Im18 0.520 0.054 9.566 0.000 0.520 0.266
## .Im16 0.598 0.052 11.498 0.000 0.598 0.413
## .Im19 0.338 0.045 7.481 0.000 0.338 0.267
## Shoppng_Exprnc 1.599 0.138 11.620 0.000 1.000 1.000
## Store_Decoratn 1.527 0.107 14.326 0.000 1.000 1.000
## Luxury_Brands 0.983 0.084 11.680 0.000 1.000 1.000
## French_Culture 1.003 0.089 11.297 0.000 1.000 1.000
## Prdct_Assrtmnt 1.704 0.118 14.391 0.000 1.000 1.000
## Gourmet_Food 0.660 0.049 13.357 0.000 1.000 1.000
## Trendiness 1.450 0.104 13.998 0.000 1.000 1.000
## Professionalsm 0.849 0.088 9.644 0.000 1.000 1.000
Modification indices
modificationindices(fit_CFA) %>% filter(mi>10)
## lhs op rhs mi epc sepc.lv sepc.all sepc.nox
## 1 Shopping_Experience =~ Im12 11.029 -0.115 -0.145 -0.128 -0.128
## 2 Shopping_Experience =~ Im9 20.552 0.204 0.258 0.191 0.191
## 3 Store_Decoration =~ Im9 19.199 0.194 0.240 0.178 0.178
## 4 Luxury_Brands =~ Im6 11.249 -0.140 -0.139 -0.116 -0.116
## 5 Luxury_Brands =~ Im9 74.107 0.496 0.492 0.364 0.364
## 6 Product_Assortment =~ Im20 14.739 -0.151 -0.197 -0.131 -0.131
## 7 Product_Assortment =~ Im12 10.703 -0.111 -0.145 -0.128 -0.128
## 8 Product_Assortment =~ Im13 14.024 0.133 0.174 0.144 0.144
## 9 Product_Assortment =~ Im9 22.723 0.190 0.248 0.183 0.183
## 10 Gourmet_Food =~ Im11 12.787 0.215 0.175 0.153 0.153
## 11 Gourmet_Food =~ Im6 11.064 -0.237 -0.193 -0.161 -0.161
## 12 Trendiness =~ Im12 17.366 -0.180 -0.217 -0.190 -0.190
## 13 Trendiness =~ Im13 23.945 0.220 0.265 0.220 0.220
## 14 Trendiness =~ Im7 17.707 -0.148 -0.178 -0.148 -0.148
## 15 Trendiness =~ Im9 58.323 0.350 0.422 0.312 0.312
## 16 Professionalism =~ Im9 28.665 0.349 0.322 0.238 0.238
## 17 Im20 ~~ Im21 11.693 0.231 0.231 0.339 0.339
## 18 Im22 ~~ Im21 15.187 -0.286 -0.286 -0.457 -0.457
## 19 Im12 ~~ Im11 13.264 0.145 0.145 0.288 0.288
## 20 Im13 ~~ Im11 21.231 -0.190 -0.190 -0.338 -0.338
## 21 Im13 ~~ Im1 10.737 0.068 0.068 0.410 0.410
## 22 Im6 ~~ Im7 26.792 0.475 0.475 1.511 1.511
Summary of CFA Model with 8 Factors - Removing Im9
model_CFA <-"
Shopping_Experience =~ Im20+Im22+Im21
Store_Decoration =~ Im3+Im4+Im5
Luxury_Brands =~ Im12+Im13+Im11
French_Culture =~ Im6+Im7
Product_Assortment =~ Im1+Im2
Gourmet_Food =~ Im10+Im14
Trendiness =~ Im17+Im18
Professionalism =~ Im16+Im19"
# removed: Im9
fit_CFA <- lavaan::cfa(model_CFA, data=df, missing="ML")
summary(fit_CFA,fit.measures=TRUE, standardized=TRUE)
## lavaan 0.6.15 ended normally after 106 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 85
##
## Number of observations 553
## Number of missing patterns 79
##
## Model Test User Model:
##
## Test statistic 259.047
## Degrees of freedom 124
## P-value (Chi-square) 0.000
##
## Model Test Baseline Model:
##
## Test statistic 7474.765
## Degrees of freedom 171
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.982
## Tucker-Lewis Index (TLI) 0.975
##
## Robust Comparative Fit Index (CFI) 0.981
## Robust Tucker-Lewis Index (TLI) 0.974
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -12973.111
## Loglikelihood unrestricted model (H1) -12843.588
##
## Akaike (AIC) 26116.223
## Bayesian (BIC) 26483.028
## Sample-size adjusted Bayesian (SABIC) 26213.200
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.044
## 90 Percent confidence interval - lower 0.037
## 90 Percent confidence interval - upper 0.052
## P-value H_0: RMSEA <= 0.050 0.886
## P-value H_0: RMSEA >= 0.080 0.000
##
## Robust RMSEA 0.045
## 90 Percent confidence interval - lower 0.038
## 90 Percent confidence interval - upper 0.053
## P-value H_0: Robust RMSEA <= 0.050 0.825
## P-value H_0: Robust RMSEA >= 0.080 0.000
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.029
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Shopping_Experience =~
## Im20 1.000 1.265 0.845
## Im22 1.060 0.047 22.606 0.000 1.340 0.877
## Im21 0.849 0.041 20.824 0.000 1.074 0.783
## Store_Decoration =~
## Im3 1.000 1.236 0.937
## Im4 1.056 0.025 42.716 0.000 1.305 0.969
## Im5 0.818 0.034 23.815 0.000 1.011 0.760
## Luxury_Brands =~
## Im12 1.000 0.991 0.872
## Im13 1.039 0.050 20.658 0.000 1.030 0.855
## Im11 0.709 0.047 15.046 0.000 0.703 0.615
## French_Culture =~
## Im6 1.000 0.975 0.813
## Im7 1.184 0.071 16.770 0.000 1.155 0.955
## Product_Assortment =~
## Im1 1.000 1.305 0.980
## Im2 0.885 0.033 27.043 0.000 1.155 0.899
## Gourmet_Food =~
## Im10 1.000 0.812 0.923
## Im14 1.015 0.036 28.479 0.000 0.824 0.952
## Trendiness =~
## Im17 1.000 1.204 0.969
## Im18 0.994 0.041 24.143 0.000 1.197 0.856
## Professionalism =~
## Im16 1.000 0.921 0.766
## Im19 1.046 0.061 17.170 0.000 0.963 0.856
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Shopping_Experience ~~
## Store_Decoratn 0.730 0.082 8.912 0.000 0.467 0.467
## Luxury_Brands 0.524 0.068 7.696 0.000 0.418 0.418
## French_Culture 0.410 0.065 6.352 0.000 0.333 0.333
## Prdct_Assrtmnt 0.739 0.085 8.728 0.000 0.448 0.448
## Gourmet_Food 0.303 0.051 5.948 0.000 0.295 0.295
## Trendiness 0.787 0.081 9.715 0.000 0.516 0.516
## Professionalsm 0.557 0.069 8.089 0.000 0.478 0.478
## Store_Decoration ~~
## Luxury_Brands 0.577 0.064 8.958 0.000 0.471 0.471
## French_Culture 0.402 0.063 6.350 0.000 0.334 0.334
## Prdct_Assrtmnt 0.711 0.079 9.032 0.000 0.441 0.441
## Gourmet_Food 0.418 0.050 8.393 0.000 0.416 0.416
## Trendiness 0.770 0.076 10.140 0.000 0.517 0.517
## Professionalsm 0.743 0.071 10.465 0.000 0.653 0.653
## Luxury_Brands ~~
## French_Culture 0.295 0.050 5.922 0.000 0.306 0.306
## Prdct_Assrtmnt 0.618 0.068 9.135 0.000 0.478 0.478
## Gourmet_Food 0.364 0.043 8.495 0.000 0.452 0.452
## Trendiness 0.676 0.065 10.425 0.000 0.566 0.566
## Professionalsm 0.483 0.055 8.825 0.000 0.529 0.529
## French_Culture ~~
## Prdct_Assrtmnt 0.286 0.060 4.735 0.000 0.225 0.225
## Gourmet_Food 0.463 0.047 9.829 0.000 0.585 0.585
## Trendiness 0.378 0.061 6.175 0.000 0.322 0.322
## Professionalsm 0.328 0.051 6.438 0.000 0.366 0.366
## Product_Assortment ~~
## Gourmet_Food 0.328 0.050 6.584 0.000 0.309 0.309
## Trendiness 0.817 0.079 10.362 0.000 0.519 0.519
## Professionalsm 0.717 0.072 9.956 0.000 0.597 0.597
## Gourmet_Food ~~
## Trendiness 0.318 0.047 6.801 0.000 0.325 0.325
## Professionalsm 0.372 0.043 8.589 0.000 0.498 0.498
## Trendiness ~~
## Professionalsm 0.667 0.066 10.040 0.000 0.601 0.601
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im20 4.672 0.064 73.177 0.000 4.672 3.123
## .Im22 4.279 0.065 65.401 0.000 4.279 2.799
## .Im21 5.139 0.058 87.970 0.000 5.139 3.751
## .Im3 4.995 0.056 88.560 0.000 4.995 3.786
## .Im4 4.999 0.057 86.983 0.000 4.999 3.712
## .Im5 5.035 0.057 87.844 0.000 5.035 3.787
## .Im12 5.666 0.049 116.089 0.000 5.666 4.983
## .Im13 5.448 0.052 105.615 0.000 5.448 4.524
## .Im11 5.653 0.049 115.271 0.000 5.653 4.943
## .Im6 5.827 0.051 113.784 0.000 5.827 4.858
## .Im7 5.753 0.052 110.826 0.000 5.753 4.756
## .Im1 4.790 0.057 84.202 0.000 4.790 3.597
## .Im2 4.857 0.055 88.354 0.000 4.857 3.779
## .Im10 6.100 0.037 162.789 0.000 6.100 6.937
## .Im14 6.138 0.037 165.861 0.000 6.138 7.093
## .Im17 5.025 0.053 94.519 0.000 5.025 4.041
## .Im18 4.595 0.060 76.447 0.000 4.595 3.287
## .Im16 5.135 0.052 99.147 0.000 5.135 4.269
## .Im19 5.145 0.048 106.948 0.000 5.145 4.574
## Shoppng_Exprnc 0.000 0.000 0.000
## Store_Decoratn 0.000 0.000 0.000
## Luxury_Brands 0.000 0.000 0.000
## French_Culture 0.000 0.000 0.000
## Prdct_Assrtmnt 0.000 0.000 0.000
## Gourmet_Food 0.000 0.000 0.000
## Trendiness 0.000 0.000 0.000
## Professionalsm 0.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im20 0.638 0.061 10.451 0.000 0.638 0.285
## .Im22 0.541 0.063 8.540 0.000 0.541 0.231
## .Im21 0.725 0.057 12.672 0.000 0.725 0.386
## .Im3 0.213 0.024 8.755 0.000 0.213 0.122
## .Im4 0.109 0.024 4.532 0.000 0.109 0.060
## .Im5 0.747 0.049 15.217 0.000 0.747 0.422
## .Im12 0.310 0.040 7.845 0.000 0.310 0.240
## .Im13 0.390 0.045 8.765 0.000 0.390 0.269
## .Im11 0.814 0.055 14.802 0.000 0.814 0.622
## .Im6 0.487 0.056 8.677 0.000 0.487 0.339
## .Im7 0.128 0.067 1.930 0.054 0.128 0.088
## .Im1 0.070 0.050 1.394 0.163 0.070 0.040
## .Im2 0.317 0.044 7.233 0.000 0.317 0.192
## .Im10 0.114 0.019 5.961 0.000 0.114 0.148
## .Im14 0.070 0.019 3.680 0.000 0.070 0.093
## .Im17 0.095 0.045 2.112 0.035 0.095 0.062
## .Im18 0.521 0.055 9.540 0.000 0.521 0.267
## .Im16 0.599 0.052 11.498 0.000 0.599 0.414
## .Im19 0.338 0.045 7.457 0.000 0.338 0.267
## Shoppng_Exprnc 1.599 0.138 11.623 0.000 1.000 1.000
## Store_Decoratn 1.528 0.107 14.326 0.000 1.000 1.000
## Luxury_Brands 0.983 0.084 11.678 0.000 1.000 1.000
## French_Culture 0.952 0.095 10.058 0.000 1.000 1.000
## Prdct_Assrtmnt 1.704 0.118 14.388 0.000 1.000 1.000
## Gourmet_Food 0.659 0.049 13.328 0.000 1.000 1.000
## Trendiness 1.451 0.104 13.988 0.000 1.000 1.000
## Professionalsm 0.849 0.088 9.638 0.000 1.000 1.000
Modification indices
modificationindices(fit_CFA) %>% filter(mi>10)
## lhs op rhs mi epc sepc.lv sepc.all sepc.nox
## 1 Shopping_Experience =~ Im12 10.952 -0.115 -0.145 -0.127 -0.127
## 2 Product_Assortment =~ Im20 14.777 -0.151 -0.197 -0.132 -0.132
## 3 Product_Assortment =~ Im12 10.663 -0.111 -0.145 -0.127 -0.127
## 4 Product_Assortment =~ Im13 13.970 0.133 0.174 0.144 0.144
## 5 Gourmet_Food =~ Im11 12.742 0.215 0.174 0.152 0.152
## 6 Trendiness =~ Im12 17.245 -0.179 -0.216 -0.190 -0.190
## 7 Trendiness =~ Im13 23.832 0.220 0.265 0.220 0.220
## 8 Im20 ~~ Im21 11.455 0.228 0.228 0.335 0.335
## 9 Im22 ~~ Im21 15.139 -0.285 -0.285 -0.455 -0.455
## 10 Im12 ~~ Im11 13.307 0.145 0.145 0.288 0.288
## 11 Im13 ~~ Im11 21.323 -0.191 -0.191 -0.338 -0.338
## 12 Im13 ~~ Im1 10.707 0.068 0.068 0.409 0.409
Summary of CFA Model with 8 Factors - Removing Im9+Im11
model_CFA <-"
Shopping_Experience =~ Im20+Im22+Im21
Store_Decoration =~ Im3+Im4+Im5
Luxury_Brands =~ Im12+Im13
French_Culture =~ Im6+Im7
Product_Assortment =~ Im1+Im2
Gourmet_Food =~ Im10+Im14
Trendiness =~ Im17+Im18
Professionalism =~ Im16+Im19"
# removed: Im9, Im11
fit_CFA <- lavaan::cfa(model_CFA, data=df, missing="ML")
summary(fit_CFA,fit.measures=TRUE, standardized=TRUE)
## lavaan 0.6.15 ended normally after 104 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 82
##
## Number of observations 553
## Number of missing patterns 75
##
## Model Test User Model:
##
## Test statistic 203.508
## Degrees of freedom 107
## P-value (Chi-square) 0.000
##
## Model Test Baseline Model:
##
## Test statistic 7217.692
## Degrees of freedom 153
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.986
## Tucker-Lewis Index (TLI) 0.980
##
## Robust Comparative Fit Index (CFI) 0.986
## Robust Tucker-Lewis Index (TLI) 0.980
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -12234.854
## Loglikelihood unrestricted model (H1) -12133.100
##
## Akaike (AIC) 24633.709
## Bayesian (BIC) 24987.568
## Sample-size adjusted Bayesian (SABIC) 24727.264
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.040
## 90 Percent confidence interval - lower 0.032
## 90 Percent confidence interval - upper 0.049
## P-value H_0: RMSEA <= 0.050 0.971
## P-value H_0: RMSEA >= 0.080 0.000
##
## Robust RMSEA 0.041
## 90 Percent confidence interval - lower 0.033
## 90 Percent confidence interval - upper 0.050
## P-value H_0: Robust RMSEA <= 0.050 0.946
## P-value H_0: Robust RMSEA >= 0.080 0.000
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.024
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Shopping_Experience =~
## Im20 1.000 1.264 0.845
## Im22 1.061 0.047 22.572 0.000 1.341 0.877
## Im21 0.849 0.041 20.811 0.000 1.073 0.783
## Store_Decoration =~
## Im3 1.000 1.236 0.937
## Im4 1.056 0.025 42.718 0.000 1.305 0.969
## Im5 0.818 0.034 23.812 0.000 1.011 0.760
## Luxury_Brands =~
## Im12 1.000 0.925 0.814
## Im13 1.197 0.068 17.500 0.000 1.108 0.919
## French_Culture =~
## Im6 1.000 0.975 0.813
## Im7 1.185 0.070 16.849 0.000 1.155 0.955
## Product_Assortment =~
## Im1 1.000 1.309 0.983
## Im2 0.880 0.033 26.989 0.000 1.152 0.896
## Gourmet_Food =~
## Im10 1.000 0.811 0.922
## Im14 1.018 0.036 28.129 0.000 0.825 0.954
## Trendiness =~
## Im17 1.000 1.208 0.971
## Im18 0.989 0.041 24.254 0.000 1.194 0.854
## Professionalism =~
## Im16 1.000 0.921 0.766
## Im19 1.046 0.061 17.135 0.000 0.964 0.857
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Shopping_Experience ~~
## Store_Decoratn 0.729 0.082 8.912 0.000 0.467 0.467
## Luxury_Brands 0.475 0.065 7.311 0.000 0.407 0.407
## French_Culture 0.410 0.065 6.356 0.000 0.333 0.333
## Prdct_Assrtmnt 0.741 0.085 8.745 0.000 0.448 0.448
## Gourmet_Food 0.302 0.051 5.941 0.000 0.295 0.295
## Trendiness 0.786 0.081 9.708 0.000 0.515 0.515
## Professionalsm 0.556 0.069 8.084 0.000 0.478 0.478
## Store_Decoration ~~
## Luxury_Brands 0.529 0.063 8.358 0.000 0.463 0.463
## French_Culture 0.402 0.063 6.355 0.000 0.334 0.334
## Prdct_Assrtmnt 0.711 0.079 9.035 0.000 0.440 0.440
## Gourmet_Food 0.417 0.050 8.384 0.000 0.416 0.416
## Trendiness 0.770 0.076 10.133 0.000 0.516 0.516
## Professionalsm 0.743 0.071 10.458 0.000 0.653 0.653
## Luxury_Brands ~~
## French_Culture 0.256 0.048 5.378 0.000 0.284 0.284
## Prdct_Assrtmnt 0.592 0.066 8.971 0.000 0.489 0.489
## Gourmet_Food 0.310 0.042 7.391 0.000 0.413 0.413
## Trendiness 0.646 0.064 10.050 0.000 0.579 0.579
## Professionalsm 0.441 0.054 8.215 0.000 0.517 0.517
## French_Culture ~~
## Prdct_Assrtmnt 0.286 0.061 4.723 0.000 0.224 0.224
## Gourmet_Food 0.463 0.047 9.822 0.000 0.585 0.585
## Trendiness 0.378 0.061 6.179 0.000 0.321 0.321
## Professionalsm 0.328 0.051 6.441 0.000 0.366 0.366
## Product_Assortment ~~
## Gourmet_Food 0.327 0.050 6.578 0.000 0.309 0.309
## Trendiness 0.817 0.079 10.366 0.000 0.517 0.517
## Professionalsm 0.717 0.072 9.945 0.000 0.595 0.595
## Gourmet_Food ~~
## Trendiness 0.318 0.047 6.810 0.000 0.325 0.325
## Professionalsm 0.371 0.043 8.565 0.000 0.497 0.497
## Trendiness ~~
## Professionalsm 0.668 0.066 10.050 0.000 0.600 0.600
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im20 4.672 0.064 73.175 0.000 4.672 3.123
## .Im22 4.279 0.065 65.401 0.000 4.279 2.799
## .Im21 5.139 0.058 87.969 0.000 5.139 3.751
## .Im3 4.995 0.056 88.561 0.000 4.995 3.786
## .Im4 4.999 0.057 86.984 0.000 4.999 3.712
## .Im5 5.035 0.057 87.844 0.000 5.035 3.787
## .Im12 5.665 0.049 116.049 0.000 5.665 4.986
## .Im13 5.448 0.052 105.546 0.000 5.448 4.521
## .Im6 5.827 0.051 113.785 0.000 5.827 4.858
## .Im7 5.753 0.052 110.824 0.000 5.753 4.756
## .Im1 4.791 0.057 84.201 0.000 4.791 3.597
## .Im2 4.857 0.055 88.354 0.000 4.857 3.779
## .Im10 6.100 0.037 162.776 0.000 6.100 6.936
## .Im14 6.138 0.037 165.836 0.000 6.138 7.092
## .Im17 5.025 0.053 94.523 0.000 5.025 4.041
## .Im18 4.595 0.060 76.454 0.000 4.595 3.287
## .Im16 5.135 0.052 99.142 0.000 5.135 4.269
## .Im19 5.145 0.048 106.947 0.000 5.145 4.574
## Shoppng_Exprnc 0.000 0.000 0.000
## Store_Decoratn 0.000 0.000 0.000
## Luxury_Brands 0.000 0.000 0.000
## French_Culture 0.000 0.000 0.000
## Prdct_Assrtmnt 0.000 0.000 0.000
## Gourmet_Food 0.000 0.000 0.000
## Trendiness 0.000 0.000 0.000
## Professionalsm 0.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im20 0.640 0.061 10.459 0.000 0.640 0.286
## .Im22 0.539 0.063 8.489 0.000 0.539 0.231
## .Im21 0.726 0.057 12.661 0.000 0.726 0.386
## .Im3 0.213 0.024 8.752 0.000 0.213 0.122
## .Im4 0.109 0.024 4.527 0.000 0.109 0.060
## .Im5 0.747 0.049 15.217 0.000 0.747 0.422
## .Im12 0.435 0.047 9.159 0.000 0.435 0.337
## .Im13 0.226 0.058 3.892 0.000 0.226 0.155
## .Im6 0.488 0.056 8.724 0.000 0.488 0.339
## .Im7 0.128 0.066 1.939 0.053 0.128 0.088
## .Im1 0.060 0.051 1.183 0.237 0.060 0.034
## .Im2 0.325 0.044 7.411 0.000 0.325 0.197
## .Im10 0.116 0.020 5.959 0.000 0.116 0.150
## .Im14 0.068 0.019 3.503 0.000 0.068 0.090
## .Im17 0.088 0.045 1.957 0.050 0.088 0.057
## .Im18 0.528 0.054 9.725 0.000 0.528 0.270
## .Im16 0.599 0.052 11.487 0.000 0.599 0.414
## .Im19 0.337 0.045 7.424 0.000 0.337 0.266
## Shoppng_Exprnc 1.597 0.138 11.609 0.000 1.000 1.000
## Store_Decoratn 1.527 0.107 14.325 0.000 1.000 1.000
## Luxury_Brands 0.856 0.084 10.186 0.000 1.000 1.000
## French_Culture 0.951 0.094 10.075 0.000 1.000 1.000
## Prdct_Assrtmnt 1.714 0.119 14.453 0.000 1.000 1.000
## Gourmet_Food 0.657 0.050 13.263 0.000 1.000 1.000
## Trendiness 1.459 0.104 14.068 0.000 1.000 1.000
## Professionalsm 0.848 0.088 9.629 0.000 1.000 1.000
Modification indices
modificationindices(fit_CFA) %>% filter(mi>10)
## lhs op rhs mi epc sepc.lv sepc.all sepc.nox
## 1 Product_Assortment =~ Im20 14.627 -0.149 -0.195 -0.131 -0.131
## 2 Gourmet_Food =~ Im12 11.344 0.186 0.151 0.133 0.133
## 3 Gourmet_Food =~ Im13 11.344 -0.222 -0.180 -0.150 -0.150
## 4 Im20 ~~ Im21 11.943 0.233 0.233 0.342 0.342
## 5 Im22 ~~ Im21 15.754 -0.292 -0.292 -0.466 -0.466
Summary of CFA Model with 8 Factors - Removing Im9+Im11+Im21
model_CFA <-"
Shopping_Experience =~ Im20+Im22
Store_Decoration =~ Im3+Im4+Im5
Luxury_Brands =~ Im12+Im13
French_Culture =~ Im6+Im7
Product_Assortment =~ Im1+Im2
Gourmet_Food =~ Im10+Im14
Trendiness =~ Im17+Im18
Professionalism =~ Im16+Im19"
# removed Im9, Im11, Im21
fit_CFA <- lavaan::cfa(model_CFA, data=df, missing="ML")
summary(fit_CFA,fit.measures=TRUE, standardized=TRUE)
## lavaan 0.6.15 ended normally after 105 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 79
##
## Number of observations 553
## Number of missing patterns 72
##
## Model Test User Model:
##
## Test statistic 171.890
## Degrees of freedom 91
## P-value (Chi-square) 0.000
##
## Model Test Baseline Model:
##
## Test statistic 6788.564
## Degrees of freedom 136
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.988
## Tucker-Lewis Index (TLI) 0.982
##
## Robust Comparative Fit Index (CFI) 0.988
## Robust Tucker-Lewis Index (TLI) 0.982
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -11483.125
## Loglikelihood unrestricted model (H1) -11397.180
##
## Akaike (AIC) 23124.249
## Bayesian (BIC) 23465.163
## Sample-size adjusted Bayesian (SABIC) 23214.382
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.040
## 90 Percent confidence interval - lower 0.031
## 90 Percent confidence interval - upper 0.049
## P-value H_0: RMSEA <= 0.050 0.964
## P-value H_0: RMSEA >= 0.080 0.000
##
## Robust RMSEA 0.041
## 90 Percent confidence interval - lower 0.032
## 90 Percent confidence interval - upper 0.051
## P-value H_0: Robust RMSEA <= 0.050 0.937
## P-value H_0: Robust RMSEA >= 0.080 0.000
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.025
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Shopping_Experience =~
## Im20 1.000 1.136 0.759
## Im22 1.319 0.092 14.335 0.000 1.499 0.979
## Store_Decoration =~
## Im3 1.000 1.237 0.937
## Im4 1.055 0.025 42.733 0.000 1.304 0.969
## Im5 0.817 0.034 23.822 0.000 1.011 0.760
## Luxury_Brands =~
## Im12 1.000 0.926 0.815
## Im13 1.195 0.068 17.469 0.000 1.107 0.918
## French_Culture =~
## Im6 1.000 0.976 0.814
## Im7 1.182 0.069 17.097 0.000 1.154 0.954
## Product_Assortment =~
## Im1 1.000 1.312 0.986
## Im2 0.875 0.032 26.977 0.000 1.149 0.894
## Gourmet_Food =~
## Im10 1.000 0.811 0.922
## Im14 1.018 0.036 28.124 0.000 0.826 0.954
## Trendiness =~
## Im17 1.000 1.205 0.970
## Im18 0.992 0.041 24.481 0.000 1.195 0.855
## Professionalism =~
## Im16 1.000 0.921 0.765
## Im19 1.047 0.061 17.109 0.000 0.964 0.857
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Shopping_Experience ~~
## Store_Decoratn 0.633 0.082 7.726 0.000 0.451 0.451
## Luxury_Brands 0.366 0.064 5.712 0.000 0.348 0.348
## French_Culture 0.375 0.060 6.226 0.000 0.339 0.339
## Prdct_Assrtmnt 0.640 0.082 7.797 0.000 0.429 0.429
## Gourmet_Food 0.249 0.047 5.278 0.000 0.270 0.270
## Trendiness 0.687 0.082 8.359 0.000 0.502 0.502
## Professionalsm 0.462 0.068 6.807 0.000 0.441 0.441
## Store_Decoration ~~
## Luxury_Brands 0.530 0.063 8.364 0.000 0.463 0.463
## French_Culture 0.403 0.063 6.380 0.000 0.334 0.334
## Prdct_Assrtmnt 0.711 0.079 9.032 0.000 0.438 0.438
## Gourmet_Food 0.418 0.050 8.386 0.000 0.416 0.416
## Trendiness 0.770 0.076 10.140 0.000 0.517 0.517
## Professionalsm 0.744 0.071 10.457 0.000 0.653 0.653
## Luxury_Brands ~~
## French_Culture 0.256 0.048 5.381 0.000 0.284 0.284
## Prdct_Assrtmnt 0.593 0.066 8.993 0.000 0.488 0.488
## Gourmet_Food 0.310 0.042 7.394 0.000 0.413 0.413
## Trendiness 0.645 0.064 10.045 0.000 0.578 0.578
## Professionalsm 0.441 0.054 8.216 0.000 0.517 0.517
## French_Culture ~~
## Prdct_Assrtmnt 0.285 0.061 4.710 0.000 0.223 0.223
## Gourmet_Food 0.463 0.047 9.847 0.000 0.585 0.585
## Trendiness 0.378 0.061 6.197 0.000 0.322 0.322
## Professionalsm 0.329 0.051 6.455 0.000 0.366 0.366
## Product_Assortment ~~
## Gourmet_Food 0.327 0.050 6.560 0.000 0.307 0.307
## Trendiness 0.816 0.079 10.354 0.000 0.516 0.516
## Professionalsm 0.716 0.072 9.933 0.000 0.593 0.593
## Gourmet_Food ~~
## Trendiness 0.317 0.047 6.796 0.000 0.325 0.325
## Professionalsm 0.371 0.043 8.562 0.000 0.497 0.497
## Trendiness ~~
## Professionalsm 0.667 0.066 10.039 0.000 0.601 0.601
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im20 4.670 0.064 73.048 0.000 4.670 3.119
## .Im22 4.280 0.065 65.348 0.000 4.280 2.797
## .Im3 4.995 0.056 88.565 0.000 4.995 3.786
## .Im4 4.999 0.057 86.989 0.000 4.999 3.712
## .Im5 5.035 0.057 87.842 0.000 5.035 3.787
## .Im12 5.665 0.049 116.075 0.000 5.665 4.987
## .Im13 5.448 0.052 105.567 0.000 5.448 4.522
## .Im6 5.827 0.051 113.783 0.000 5.827 4.858
## .Im7 5.753 0.052 110.866 0.000 5.753 4.758
## .Im1 4.791 0.057 84.238 0.000 4.791 3.598
## .Im2 4.857 0.055 88.364 0.000 4.857 3.779
## .Im10 6.100 0.037 162.765 0.000 6.100 6.936
## .Im14 6.138 0.037 165.818 0.000 6.138 7.091
## .Im17 5.025 0.053 94.570 0.000 5.025 4.043
## .Im18 4.595 0.060 76.477 0.000 4.595 3.288
## .Im16 5.136 0.052 99.141 0.000 5.136 4.269
## .Im19 5.145 0.048 106.952 0.000 5.145 4.574
## Shoppng_Exprnc 0.000 0.000 0.000
## Store_Decoratn 0.000 0.000 0.000
## Luxury_Brands 0.000 0.000 0.000
## French_Culture 0.000 0.000 0.000
## Prdct_Assrtmnt 0.000 0.000 0.000
## Gourmet_Food 0.000 0.000 0.000
## Trendiness 0.000 0.000 0.000
## Professionalsm 0.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im20 0.952 0.096 9.941 0.000 0.952 0.425
## .Im22 0.096 0.133 0.721 0.471 0.096 0.041
## .Im3 0.211 0.024 8.679 0.000 0.211 0.121
## .Im4 0.112 0.024 4.637 0.000 0.112 0.062
## .Im5 0.746 0.049 15.214 0.000 0.746 0.422
## .Im12 0.433 0.048 9.111 0.000 0.433 0.336
## .Im13 0.227 0.058 3.915 0.000 0.227 0.157
## .Im6 0.486 0.055 8.821 0.000 0.486 0.338
## .Im7 0.130 0.065 2.008 0.045 0.130 0.089
## .Im1 0.050 0.051 0.993 0.321 0.050 0.028
## .Im2 0.332 0.044 7.577 0.000 0.332 0.201
## .Im10 0.116 0.020 5.966 0.000 0.116 0.150
## .Im14 0.067 0.019 3.496 0.000 0.067 0.090
## .Im17 0.092 0.044 2.086 0.037 0.092 0.060
## .Im18 0.524 0.054 9.744 0.000 0.524 0.268
## .Im16 0.600 0.052 11.482 0.000 0.600 0.414
## .Im19 0.336 0.045 7.394 0.000 0.336 0.266
## Shoppng_Exprnc 1.290 0.144 8.955 0.000 1.000 1.000
## Store_Decoratn 1.530 0.107 14.344 0.000 1.000 1.000
## Luxury_Brands 0.857 0.084 10.189 0.000 1.000 1.000
## French_Culture 0.953 0.094 10.133 0.000 1.000 1.000
## Prdct_Assrtmnt 1.722 0.119 14.527 0.000 1.000 1.000
## Gourmet_Food 0.657 0.050 13.260 0.000 1.000 1.000
## Trendiness 1.453 0.103 14.075 0.000 1.000 1.000
## Professionalsm 0.848 0.088 9.619 0.000 1.000 1.000
Modification indices
modificationindices(fit_CFA) %>% filter(mi>10)
## lhs op rhs mi epc sepc.lv sepc.all sepc.nox
## 1 Luxury_Brands =~ Im20 20.767 0.296 0.274 0.183 0.183
## 2 Luxury_Brands =~ Im22 20.767 -0.390 -0.361 -0.236 -0.236
## 3 Gourmet_Food =~ Im12 11.239 0.185 0.150 0.132 0.132
## 4 Gourmet_Food =~ Im13 11.239 -0.222 -0.180 -0.149 -0.149
Summary of CFA Model with 7 Factors - Removing Im9+Im11 and Shopping_Experience Factor
model_CFA <-"
Store_Decoration =~ Im3+Im4+Im5
Luxury_Brands =~ Im12+Im13
French_Culture =~ Im6+Im7
Product_Assortment =~ Im1+Im2
Gourmet_Food =~ Im10+Im14
Trendiness =~ Im17+Im18
Professionalism =~ Im16+Im19"
# removed Im9, Im11, Im21, Shopping_Experience =~ Im20+Im22
fit_CFA <- lavaan::cfa(model_CFA, data=df, missing="ML")
summary(fit_CFA,fit.measures=TRUE, standardized=TRUE)
## lavaan 0.6.15 ended normally after 95 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 66
##
## Number of observations 553
## Number of missing patterns 64
##
## Model Test User Model:
##
## Test statistic 126.805
## Degrees of freedom 69
## P-value (Chi-square) 0.000
##
## Model Test Baseline Model:
##
## Test statistic 6104.996
## Degrees of freedom 105
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.990
## Tucker-Lewis Index (TLI) 0.985
##
## Robust Comparative Fit Index (CFI) 0.990
## Robust Tucker-Lewis Index (TLI) 0.985
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -9820.987
## Loglikelihood unrestricted model (H1) -9757.585
##
## Akaike (AIC) 19773.975
## Bayesian (BIC) 20058.788
## Sample-size adjusted Bayesian (SABIC) 19849.275
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.039
## 90 Percent confidence interval - lower 0.028
## 90 Percent confidence interval - upper 0.049
## P-value H_0: RMSEA <= 0.050 0.958
## P-value H_0: RMSEA >= 0.080 0.000
##
## Robust RMSEA 0.040
## 90 Percent confidence interval - lower 0.029
## 90 Percent confidence interval - upper 0.051
## P-value H_0: Robust RMSEA <= 0.050 0.930
## P-value H_0: Robust RMSEA >= 0.080 0.000
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.022
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Store_Decoration =~
## Im3 1.000 1.235 0.936
## Im4 1.059 0.025 42.544 0.000 1.307 0.971
## Im5 0.818 0.034 23.770 0.000 1.010 0.759
## Luxury_Brands =~
## Im12 1.000 0.926 0.815
## Im13 1.195 0.068 17.480 0.000 1.107 0.918
## French_Culture =~
## Im6 1.000 0.983 0.820
## Im7 1.167 0.070 16.701 0.000 1.147 0.948
## Product_Assortment =~
## Im1 1.000 1.302 0.978
## Im2 0.889 0.033 26.708 0.000 1.158 0.901
## Gourmet_Food =~
## Im10 1.000 0.810 0.921
## Im14 1.019 0.036 28.092 0.000 0.826 0.954
## Trendiness =~
## Im17 1.000 1.213 0.976
## Im18 0.979 0.042 23.480 0.000 1.188 0.850
## Professionalism =~
## Im16 1.000 0.920 0.765
## Im19 1.048 0.061 17.122 0.000 0.964 0.857
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Store_Decoration ~~
## Luxury_Brands 0.528 0.063 8.353 0.000 0.462 0.462
## French_Culture 0.410 0.064 6.433 0.000 0.338 0.338
## Prdct_Assrtmnt 0.708 0.079 9.014 0.000 0.441 0.441
## Gourmet_Food 0.416 0.050 8.377 0.000 0.416 0.416
## Trendiness 0.768 0.076 10.093 0.000 0.512 0.512
## Professionalsm 0.741 0.071 10.438 0.000 0.652 0.652
## Luxury_Brands ~~
## French_Culture 0.259 0.048 5.395 0.000 0.285 0.285
## Prdct_Assrtmnt 0.589 0.066 8.916 0.000 0.489 0.489
## Gourmet_Food 0.310 0.042 7.396 0.000 0.413 0.413
## Trendiness 0.649 0.064 10.076 0.000 0.578 0.578
## Professionalsm 0.441 0.054 8.217 0.000 0.517 0.517
## French_Culture ~~
## Prdct_Assrtmnt 0.291 0.061 4.772 0.000 0.227 0.227
## Gourmet_Food 0.468 0.047 9.919 0.000 0.587 0.587
## Trendiness 0.387 0.062 6.256 0.000 0.324 0.324
## Professionalsm 0.334 0.051 6.494 0.000 0.369 0.369
## Product_Assortment ~~
## Gourmet_Food 0.328 0.050 6.598 0.000 0.311 0.311
## Trendiness 0.817 0.079 10.368 0.000 0.517 0.517
## Professionalsm 0.716 0.072 9.944 0.000 0.598 0.598
## Gourmet_Food ~~
## Trendiness 0.319 0.047 6.825 0.000 0.325 0.325
## Professionalsm 0.371 0.043 8.559 0.000 0.497 0.497
## Trendiness ~~
## Professionalsm 0.669 0.066 10.060 0.000 0.599 0.599
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im3 4.995 0.056 88.555 0.000 4.995 3.786
## .Im4 4.999 0.057 86.994 0.000 4.999 3.713
## .Im5 5.036 0.057 87.849 0.000 5.036 3.787
## .Im12 5.665 0.049 116.085 0.000 5.665 4.988
## .Im13 5.449 0.052 105.564 0.000 5.449 4.521
## .Im6 5.827 0.051 113.782 0.000 5.827 4.858
## .Im7 5.752 0.052 110.741 0.000 5.752 4.753
## .Im1 4.792 0.057 84.219 0.000 4.792 3.598
## .Im2 4.859 0.055 88.409 0.000 4.859 3.781
## .Im10 6.100 0.037 162.785 0.000 6.100 6.937
## .Im14 6.138 0.037 165.854 0.000 6.138 7.093
## .Im17 5.027 0.053 94.537 0.000 5.027 4.043
## .Im18 4.597 0.060 76.490 0.000 4.597 3.289
## .Im16 5.136 0.052 99.152 0.000 5.136 4.269
## .Im19 5.145 0.048 106.958 0.000 5.145 4.574
## Store_Decoratn 0.000 0.000 0.000
## Luxury_Brands 0.000 0.000 0.000
## French_Culture 0.000 0.000 0.000
## Prdct_Assrtmnt 0.000 0.000 0.000
## Gourmet_Food 0.000 0.000 0.000
## Trendiness 0.000 0.000 0.000
## Professionalsm 0.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im3 0.217 0.025 8.786 0.000 0.217 0.125
## .Im4 0.105 0.024 4.305 0.000 0.105 0.058
## .Im5 0.748 0.049 15.226 0.000 0.748 0.423
## .Im12 0.433 0.048 9.117 0.000 0.433 0.336
## .Im13 0.228 0.058 3.919 0.000 0.228 0.157
## .Im6 0.472 0.057 8.327 0.000 0.472 0.328
## .Im7 0.149 0.066 2.240 0.025 0.149 0.102
## .Im1 0.079 0.051 1.533 0.125 0.079 0.044
## .Im2 0.310 0.045 6.958 0.000 0.310 0.188
## .Im10 0.117 0.020 5.971 0.000 0.117 0.151
## .Im14 0.067 0.019 3.468 0.001 0.067 0.090
## .Im17 0.074 0.048 1.559 0.119 0.074 0.048
## .Im18 0.541 0.056 9.602 0.000 0.541 0.277
## .Im16 0.601 0.052 11.506 0.000 0.601 0.415
## .Im19 0.336 0.045 7.391 0.000 0.336 0.265
## Store_Decoratn 1.524 0.107 14.289 0.000 1.000 1.000
## Luxury_Brands 0.857 0.084 10.194 0.000 1.000 1.000
## French_Culture 0.967 0.095 10.131 0.000 1.000 1.000
## Prdct_Assrtmnt 1.695 0.119 14.272 0.000 1.000 1.000
## Gourmet_Food 0.657 0.050 13.252 0.000 1.000 1.000
## Trendiness 1.472 0.105 14.013 0.000 1.000 1.000
## Professionalsm 0.847 0.088 9.617 0.000 1.000 1.000
Modification indices
modificationindices(fit_CFA) %>% filter(mi>10)
## lhs op rhs mi epc sepc.lv sepc.all sepc.nox
## 1 Gourmet_Food =~ Im12 11.162 0.185 0.150 0.132 0.132
## 2 Gourmet_Food =~ Im13 11.162 -0.221 -0.179 -0.149 -0.149
## 3 Gourmet_Food =~ Im6 10.546 -0.544 -0.441 -0.367 -0.367
## 4 Gourmet_Food =~ Im7 10.546 0.634 0.514 0.425 0.425
## 5 Im4 ~~ Im17 10.960 -0.050 -0.050 -0.567 -0.567
Cronbachs alpha
We once again look at cronbachs alpha as we now have more and different data than in EFA.
Store_Decoration <- c("Im3","Im4","Im5")
Luxury_Brands <- c("Im12","Im13")
French_Culture <- c("Im6","Im7")
Product_Assortment <- c("Im1","Im2")
Gourmet_Food <- c("Im10","Im14")
Trendiness <- c("Im17","Im18")
Professionalism <- c("Im16","Im19")
Store Decoration
alpha.pa1 <- psych::alpha(df[Store_Decoration])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.9156844 0.9156176 0.9000446 0.7834062 10.85081 0.006527817 5.009715 1.239067
## median_r
## 0.7402258
raw_alpha is over 0.7 and average items correlation is above 0.5
Luxury Brands
alpha.pa1 <- psych::alpha(df[Luxury_Brands])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.8533477 0.8540858 0.7453314 0.7453314 5.853343 0.0124304 5.553114 1.097921
## median_r
## 0.7453314
raw_alpha is over 0.7 and average items correlation is above 0.5
French Culture
alpha.pa1 <- psych::alpha(df[French_Culture])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.8788253 0.8788329 0.7838555 0.7838555 7.253067 0.01030533 5.792196 1.138545
## median_r
## 0.7838555
raw_alpha is over 0.7 and average items correlation is above 0.5
Product Assortment
alpha.pa1 <- psych::alpha(df[Product_Assortment])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.9410747 0.9413295 0.889162 0.889162 16.04435 0.004999316 4.823315 1.271072
## median_r
## 0.889162
raw_alpha is over 0.7 and average items correlation is above 0.5
Gourmet Food
alpha.pa1 <- psych::alpha(df[Gourmet_Food])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.9231611 0.9234534 0.8577923 0.8577923 12.06394 0.006520538 6.11706 0.8503471
## median_r
## 0.8577923
raw_alpha is over 0.7 and average items correlation is above 0.5
Trendiness
alpha.pa1 <- psych::alpha(df[Trendiness])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.9058798 0.9094269 0.8338982 0.8338982 10.04081 0.007821878 4.812844 1.267096
## median_r
## 0.8338982
raw_alpha is over 0.7 and average items correlation is above 0.5
Professionalism
alpha.pa1 <- psych::alpha(df[Professionalism])
alpha.pa1$total
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
## 0.7981553 0.7993848 0.6658127 0.6658127 3.984668 0.01708793 5.141818 1.062645
## median_r
## 0.6658127
raw_alpha is over 0.7 and average items correlation is above 0.5
Using the same evaluation methods as before we see that every factor seems to be consistent and relevant.
Correlation matrix
Here we look at the correlation matrix of the
std_fit = inspect(fit_CFA, 'std')
std_fit$psi
## Str_Dc Lxry_B Frnc_C Prdc_A Grmt_F Trndns Prfssn
## Store_Decoration 1.000
## Luxury_Brands 0.462 1.000
## French_Culture 0.338 0.285 1.000
## Product_Assortment 0.441 0.489 0.227 1.000
## Gourmet_Food 0.416 0.413 0.587 0.311 1.000
## Trendiness 0.512 0.578 0.324 0.517 0.325 1.000
## Professionalism 0.652 0.517 0.369 0.598 0.497 0.599 1.000
Individual item Reliability
std.loadings<- inspect(fit_CFA, what="std")$lambda
check=std.loadings
check[check>0] <- 1
std.loadings[std.loadings==0] <- NA
std.loadings2 <- std.loadings^2
std.theta<- inspect(fit_CFA, what="std")$theta
#Individual item Reliability (should be larger than 0.4)
IIR=std.loadings2/(colSums(std.theta)+std.loadings2)
IIR
## Str_Dc Lxry_B Frnc_C Prdc_A Grmt_F Trndns Prfssn
## Im3 0.875 NA NA NA NA NA NA
## Im4 0.942 NA NA NA NA NA NA
## Im5 0.577 NA NA NA NA NA NA
## Im12 NA 0.664 NA NA NA NA NA
## Im13 NA 0.843 NA NA NA NA NA
## Im6 NA NA 0.672 NA NA NA NA
## Im7 NA NA 0.898 NA NA NA NA
## Im1 NA NA NA 0.956 NA NA NA
## Im2 NA NA NA 0.812 NA NA NA
## Im10 NA NA NA NA 0.849 NA NA
## Im14 NA NA NA NA 0.910 NA NA
## Im17 NA NA NA NA NA 0.952 NA
## Im18 NA NA NA NA NA 0.723 NA
## Im16 NA NA NA NA NA NA 0.585
## Im19 NA NA NA NA NA NA 0.735
Composite Construct Reliability
#Composite/Construct Reliability (should be higher than 0.6)
sum.std.loadings<-colSums(std.loadings, na.rm=TRUE)^2
sum.std.theta<-rowSums(std.theta)
sum.std.theta=check*sum.std.theta
CR=sum.std.loadings/(sum.std.loadings+colSums(sum.std.theta))
CR
## Store_Decoration Luxury_Brands French_Culture Product_Assortment
## 0.9214805 0.8591514 0.8791333 0.9382603
## Gourmet_Food Trendiness Professionalism
## 0.9360069 0.9111139 0.7945510
Average Variance Extracted
#Average Variance Extracted (should be higher than 0.5)
std.loadings<- inspect(fit_CFA, what="std")$lambda
std.loadings <- std.loadings^2
AVE=colSums(std.loadings)/(colSums(sum.std.theta)+colSums(std.loadings))
AVE
## Store_Decoration Luxury_Brands French_Culture Product_Assortment
## 0.7981529 0.7537404 0.7852176 0.8838707
## Gourmet_Food Trendiness Professionalism
## 0.8797436 0.8373822 0.6598574
CFA Visualization
Model without Covariances
lavaanPlot(model = fit_CFA, node_options = list(shape = "box", fontname = "Helvetica"), edge_options = list(color = "palegreen4"), coefs = TRUE, sig = 0.05, covs = FALSE, digits = 2)
Model with Covariances
lavaanPlot(model = fit_CFA, node_options = list(shape = "box", fontname = "Helvetica"), edge_options = list(color = "palegreen4"), coefs = TRUE,sig = 0.05, covs = TRUE, digits = 2)
Structure Equation Modelling
Summary of SEM Model
model_SEM <- " Shopping_Experience =~ Im20+Im21+Im22
Store_Decoration =~ Im3+Im4+Im5
Luxury_Brands =~ Im11+Im12+Im13
French_Culture =~ Im6+Im7+Im9
Product_Assortment =~ Im1+Im2
Gourmet_Food =~ Im10+Im14
Trendiness =~ Im17+Im18
Professionalism =~ Im16+Im19
Consumer_Satisfaction ~ Shopping_Experience + Store_Decoration + Luxury_Brands + French_Culture + Product_Assortment + Gourmet_Food + Trendiness + Professionalism
Affective_Commitment ~ Shopping_Experience + Store_Decoration + Luxury_Brands + French_Culture + Product_Assortment + Gourmet_Food + Trendiness + Professionalism
Consumer_Satisfaction =~ SAT_1 + SAT_2 + SAT_3
Affective_Commitment =~ COM_A1 + COM_A2 + COM_A3 + COM_A4
Repurchase_Intention =~ C_REP1 + C_REP2 + C_REP3
Cocreation_Intention =~ C_CR1 + C_CR3 + C_CR4
Repurchase_Intention ~ Consumer_Satisfaction + Affective_Commitment + Shopping_Experience + Store_Decoration + Luxury_Brands + French_Culture + Product_Assortment + Gourmet_Food + Trendiness + Professionalism
Cocreation_Intention ~ Consumer_Satisfaction + Affective_Commitment + Shopping_Experience + Store_Decoration + Luxury_Brands + French_Culture + Product_Assortment + Gourmet_Food + Trendiness + Professionalism "
model_SEM2 <- "
# LATENT VARIABLES
## FACTORS CONSTRUCT
Shopping_Experience =~ Im20+Im21+Im22
Store_Decoration =~ Im3+Im4+Im5
Luxury_Brands =~ Im11+Im12+Im13
French_Culture =~ Im6+Im7+Im9
Product_Assortment =~ Im1+Im2
Gourmet_Food =~ Im10+Im14
Trendiness =~ Im17+Im18
Professionalism =~ Im16+Im19
## MEDIATORS CONSTRUCT
Consumer_Satisfaction =~ SAT_1 + SAT_2 + SAT_3
Affective_Commitment =~ COM_A1 + COM_A2 + COM_A3 + COM_A4
## OUTCOMES CONSTRUCT
Repurchase_Intention =~ C_REP1 + C_REP2 + C_REP3
Cocreation_Intention =~ C_CR1 + C_CR3 + C_CR4
# REGRESSION
## DIRECT EFFECT
### CONSTRUCTS ON OUTCOMES
Repurchase_Intention ~ c11*Shopping_Experience + c12*Store_Decoration + c13*Luxury_Brands + c14*French_Culture + c15*Product_Assortment +c16*Gourmet_Food + c17*Trendiness + c18*Professionalism
Affective_Commitment ~ c21*Shopping_Experience + c22*Store_Decoration + c23*Luxury_Brands + c24*French_Culture + c25*Product_Assortment +c26*Gourmet_Food + c27*Trendiness + c28*Professionalism
## MEDIATOR
### CONSTRUCTS -> MEDIATORS
Consumer_Satisfaction ~ a11*Shopping_Experience + a12*Store_Decoration + a13*Luxury_Brands + a14*French_Culture + a15*Product_Assortment +a16*Gourmet_Food + a17*Trendiness + a18*Professionalism
Affective_Commitment ~ a21*Shopping_Experience + a22*Store_Decoration + a23*Luxury_Brands + a24*French_Culture + a25*Product_Assortment +a26*Gourmet_Food + a27*Trendiness + a28*Professionalism
### MEDIATORS ON OUTCOMES
Repurchase_Intention ~ b11*Consumer_Satisfaction
Repurchase_Intention ~ b12*Affective_Commitment
Cocreation_Intention ~ b21*Consumer_Satisfaction
Cocreation_Intention ~ b22*Affective_Commitment
## INDIRECT EFFECT
### REPURCHASE INTENTION
a11_b11 := a11*b11
a21_b12 := a21*b12
a12_b11 := a12*b11
a22_b12 := a22*b12
a13_b11 := a13*b11
a23_b12 := a23*b12
a14_b11 := a14*b11
a24_b12 := a24*b12
a15_b11 := a15*b11
a25_b12 := a25*b12
a16_b11 := a16*b11
a26_b12 := a26*b12
a17_b11 := a17*b11
a27_b12 := a27*b12
a18_b11 := a18*b11
a28_b12 := a28*b12
### COCREATION INTENTION
a11_b21 := a11*b21
a21_b22 := a21*b22
a12_b21 := a12*b21
a22_b22 := a22*b22
a13_b21 := a13*b21
a23_b22 := a23*b22
a14_b21 := a14*b21
a24_b12 := a24*b12
a15_b21 := a15*b21
a25_b22 := a25*b22
a16_b21 := a16*b21
a26_b22 := a26*b22
a17_b21 := a17*b21
a27_b22 := a27*b22
a18_b21 := a18*b21
a28_b22 := a28*b22
## TOTAL EFFECT
### REPURCHASE INTENTION
RI_Total_Shopping_Experience := c11 + (a11*b11) + (a21*b12)
RI_Total_Store_Decoration := c12 + (a12*b11) + (a22*b12)
RI_Total_Luxury_Brands := c13 + (a13*b11) + (a23*b12)
RI_Total_French_Culture := c14 + (a14*b11) + (a24*b21)
RI_Total_Product_Assortment := c15 + (a15*b11) + (a25*b12)
RI_Total_Gourmet_Food := c16 + (a16*b11) + (a26*b12)
RI_Total_Trendiness := c17 + (a17*b11) + (a27*b12)
RI_Total_Professionalism := c18 + (a18*b11) + (a28*b12)
### COCREATION INTENTION
CI_Total_Shopping_Experience := c21 + (a11*b21) + (a21*b22)
CI_Total_Store_Decoration := c22 + (a12*b21) + (a22*b22)
CI_Total_Luxury_Brands := c23 + (a13*b21) + (a23*b22)
CI_Total_French_Culture := c24 + (a14*b21) + (a24*b22)
CI_Total_Product_Assortment := c25 + (a15*b21) + (a25*b22)
CI_Total_Gourmet_Food := c26 + (a16*b21) + (a26*b22)
CI_Total_Trendiness := c27 + (a17*b21) + (a27*b21)
CI_Total_Professionalism := c28 + (a18*b21) + (a28*b22)
# ERROR COVARIANCES
"
fit_SEM <- lavaan::cfa(model_SEM, data=df, missing="ML")
fit_SEM
## lavaan 0.6.15 ended normally after 153 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 164
##
## Number of observations 553
## Number of missing patterns 137
##
## Model Test User Model:
##
## Test statistic 835.621
## Degrees of freedom 430
## P-value (Chi-square) 0.000
summary(fit_SEM,fit.measures=TRUE, standardized=TRUE)
## lavaan 0.6.15 ended normally after 153 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 164
##
## Number of observations 553
## Number of missing patterns 137
##
## Model Test User Model:
##
## Test statistic 835.621
## Degrees of freedom 430
## P-value (Chi-square) 0.000
##
## Model Test Baseline Model:
##
## Test statistic 12305.018
## Degrees of freedom 528
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.966
## Tucker-Lewis Index (TLI) 0.958
##
## Robust Comparative Fit Index (CFI) 0.966
## Robust Tucker-Lewis Index (TLI) 0.958
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -23197.252
## Loglikelihood unrestricted model (H1) -22779.442
##
## Akaike (AIC) 46722.504
## Bayesian (BIC) 47430.223
## Sample-size adjusted Bayesian (SABIC) 46909.614
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.041
## 90 Percent confidence interval - lower 0.037
## 90 Percent confidence interval - upper 0.045
## P-value H_0: RMSEA <= 0.050 1.000
## P-value H_0: RMSEA >= 0.080 0.000
##
## Robust RMSEA 0.042
## 90 Percent confidence interval - lower 0.038
## 90 Percent confidence interval - upper 0.046
## P-value H_0: Robust RMSEA <= 0.050 0.999
## P-value H_0: Robust RMSEA >= 0.080 0.000
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.048
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv
## Shopping_Experience =~
## Im20 1.000 1.262
## Im21 0.857 0.041 20.998 0.000 1.081
## Im22 1.056 0.046 23.027 0.000 1.333
## Store_Decoration =~
## Im3 1.000 1.235
## Im4 1.057 0.025 42.733 0.000 1.306
## Im5 0.818 0.034 23.805 0.000 1.010
## Luxury_Brands =~
## Im11 1.000 0.700
## Im12 1.415 0.094 15.007 0.000 0.991
## Im13 1.468 0.105 13.929 0.000 1.029
## French_Culture =~
## Im6 1.000 1.004
## Im7 1.101 0.049 22.598 0.000 1.106
## Im9 0.788 0.057 13.939 0.000 0.792
## Product_Assortment =~
## Im1 1.000 1.297
## Im2 0.895 0.032 28.321 0.000 1.161
## Gourmet_Food =~
## Im10 1.000 0.811
## Im14 1.018 0.035 28.748 0.000 0.826
## Trendiness =~
## Im17 1.000 1.205
## Im18 0.993 0.041 24.204 0.000 1.196
## Professionalism =~
## Im16 1.000 0.919
## Im19 1.043 0.058 17.879 0.000 0.959
## Consumer_Satisfaction =~
## SAT_1 1.000 0.882
## SAT_2 0.933 0.049 18.916 0.000 0.823
## SAT_3 0.809 0.055 14.802 0.000 0.714
## Affective_Commitment =~
## COM_A1 1.000 1.144
## COM_A2 1.174 0.055 21.504 0.000 1.343
## COM_A3 1.162 0.058 20.027 0.000 1.329
## COM_A4 1.278 0.061 20.800 0.000 1.462
## Repurchase_Intention =~
## C_REP1 1.000 0.596
## C_REP2 0.971 0.043 22.489 0.000 0.579
## C_REP3 0.702 0.037 19.036 0.000 0.419
## Cocreation_Intention =~
## C_CR1 1.000 1.658
## C_CR3 1.033 0.051 20.247 0.000 1.712
## C_CR4 0.964 0.049 19.766 0.000 1.598
## Std.all
##
## 0.844
## 0.789
## 0.873
##
## 0.936
## 0.970
## 0.760
##
## 0.613
## 0.872
## 0.855
##
## 0.837
## 0.916
## 0.586
##
## 0.974
## 0.904
##
## 0.922
## 0.954
##
## 0.969
## 0.856
##
## 0.764
## 0.853
##
## 0.865
## 0.819
## 0.624
##
## 0.796
## 0.836
## 0.817
## 0.842
##
## 0.816
## 0.931
## 0.756
##
## 0.851
## 0.826
## 0.806
##
## Regressions:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Consumer_Satisfaction ~
## Shoppng_Exprnc 0.051 0.038 1.357 0.175 0.074 0.074
## Store_Decoratn -0.110 0.043 -2.551 0.011 -0.153 -0.153
## Luxury_Brands -0.041 0.075 -0.543 0.587 -0.032 -0.032
## French_Culture 0.109 0.050 2.156 0.031 0.124 0.124
## Prdct_Assrtmnt 0.135 0.040 3.403 0.001 0.198 0.198
## Gourmet_Food 0.075 0.066 1.147 0.251 0.069 0.069
## Trendiness 0.004 0.045 0.089 0.929 0.005 0.005
## Professionalsm 0.461 0.088 5.259 0.000 0.480 0.480
## Affective_Commitment ~
## Shoppng_Exprnc 0.372 0.052 7.186 0.000 0.410 0.410
## Store_Decoratn -0.026 0.054 -0.480 0.631 -0.028 -0.028
## Luxury_Brands -0.193 0.098 -1.959 0.050 -0.118 -0.118
## French_Culture 0.237 0.065 3.621 0.000 0.208 0.208
## Prdct_Assrtmnt 0.102 0.050 2.041 0.041 0.116 0.116
## Gourmet_Food 0.016 0.085 0.194 0.846 0.012 0.012
## Trendiness -0.026 0.058 -0.450 0.653 -0.028 -0.028
## Professionalsm 0.162 0.105 1.541 0.123 0.131 0.131
## Repurchase_Intention ~
## Consmr_Stsfctn 0.215 0.045 4.785 0.000 0.318 0.318
## Affctv_Cmmtmnt 0.186 0.030 6.164 0.000 0.356 0.356
## Shoppng_Exprnc 0.040 0.028 1.435 0.151 0.086 0.086
## Store_Decoratn 0.010 0.029 0.353 0.724 0.021 0.021
## Luxury_Brands 0.078 0.051 1.523 0.128 0.092 0.092
## French_Culture -0.041 0.034 -1.187 0.235 -0.069 -0.069
## Prdct_Assrtmnt -0.017 0.026 -0.675 0.500 -0.038 -0.038
## Gourmet_Food 0.042 0.044 0.963 0.335 0.057 0.057
## Trendiness -0.009 0.030 -0.295 0.768 -0.018 -0.018
## Professionalsm -0.037 0.060 -0.621 0.535 -0.058 -0.058
## Cocreation_Intention ~
## Consmr_Stsfctn -0.356 0.131 -2.710 0.007 -0.190 -0.190
## Affctv_Cmmtmnt 0.548 0.091 6.021 0.000 0.378 0.378
## Shoppng_Exprnc 0.152 0.087 1.738 0.082 0.116 0.116
## Store_Decoratn -0.030 0.090 -0.331 0.741 -0.022 -0.022
## Luxury_Brands 0.201 0.159 1.264 0.206 0.085 0.085
## French_Culture -0.134 0.107 -1.254 0.210 -0.081 -0.081
## Prdct_Assrtmnt -0.007 0.080 -0.091 0.927 -0.006 -0.006
## Gourmet_Food -0.074 0.136 -0.542 0.588 -0.036 -0.036
## Trendiness 0.026 0.093 0.286 0.775 0.019 0.019
## Professionalsm -0.178 0.184 -0.967 0.334 -0.099 -0.099
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Shopping_Experience ~~
## Store_Decoratn 0.728 0.082 8.916 0.000 0.467 0.467
## Luxury_Brands 0.370 0.053 7.012 0.000 0.418 0.418
## French_Culture 0.446 0.066 6.743 0.000 0.352 0.352
## Prdct_Assrtmnt 0.732 0.084 8.676 0.000 0.447 0.447
## Gourmet_Food 0.302 0.051 5.952 0.000 0.295 0.295
## Trendiness 0.784 0.081 9.709 0.000 0.516 0.516
## Professionalsm 0.552 0.068 8.107 0.000 0.476 0.476
## Store_Decoration ~~
## Luxury_Brands 0.407 0.051 8.023 0.000 0.470 0.470
## French_Culture 0.452 0.063 7.146 0.000 0.364 0.364
## Prdct_Assrtmnt 0.708 0.079 9.017 0.000 0.442 0.442
## Gourmet_Food 0.417 0.050 8.396 0.000 0.417 0.417
## Trendiness 0.769 0.076 10.130 0.000 0.516 0.516
## Professionalsm 0.744 0.070 10.552 0.000 0.655 0.655
## Luxury_Brands ~~
## French_Culture 0.239 0.039 6.077 0.000 0.339 0.339
## Prdct_Assrtmnt 0.433 0.053 8.112 0.000 0.477 0.477
## Gourmet_Food 0.257 0.034 7.648 0.000 0.452 0.452
## Trendiness 0.477 0.053 9.027 0.000 0.565 0.565
## Professionalsm 0.342 0.043 7.967 0.000 0.531 0.531
## French_Culture ~~
## Prdct_Assrtmnt 0.323 0.063 5.160 0.000 0.248 0.248
## Gourmet_Food 0.490 0.047 10.536 0.000 0.602 0.602
## Trendiness 0.443 0.062 7.144 0.000 0.366 0.366
## Professionalsm 0.362 0.052 6.979 0.000 0.392 0.392
## Product_Assortment ~~
## Gourmet_Food 0.328 0.050 6.606 0.000 0.312 0.312
## Trendiness 0.814 0.079 10.355 0.000 0.521 0.521
## Professionalsm 0.717 0.071 10.051 0.000 0.602 0.602
## Gourmet_Food ~~
## Trendiness 0.317 0.047 6.800 0.000 0.325 0.325
## Professionalsm 0.372 0.043 8.640 0.000 0.500 0.500
## Trendiness ~~
## Professionalsm 0.667 0.066 10.108 0.000 0.602 0.602
## .Repurchase_Intention ~~
## .Cocretn_Intntn -0.015 0.038 -0.404 0.686 -0.021 -0.021
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im20 4.672 0.064 73.218 0.000 4.672 3.125
## .Im21 5.139 0.058 87.977 0.000 5.139 3.750
## .Im22 4.280 0.065 65.479 0.000 4.280 2.802
## .Im3 4.995 0.056 88.571 0.000 4.995 3.786
## .Im4 4.999 0.057 87.000 0.000 4.999 3.713
## .Im5 5.036 0.057 87.852 0.000 5.036 3.787
## .Im11 5.653 0.049 115.303 0.000 5.653 4.944
## .Im12 5.665 0.049 116.165 0.000 5.665 4.987
## .Im13 5.448 0.052 105.695 0.000 5.448 4.528
## .Im6 5.827 0.051 113.792 0.000 5.827 4.857
## .Im7 5.752 0.052 111.063 0.000 5.752 4.765
## .Im9 5.075 0.058 87.406 0.000 5.075 3.756
## .Im1 4.792 0.057 84.290 0.000 4.792 3.600
## .Im2 4.858 0.055 88.417 0.000 4.858 3.781
## .Im10 6.100 0.037 162.786 0.000 6.100 6.936
## .Im14 6.138 0.037 165.853 0.000 6.138 7.093
## .Im17 5.025 0.053 94.560 0.000 5.025 4.043
## .Im18 4.595 0.060 76.466 0.000 4.595 3.287
## .Im16 5.135 0.052 99.194 0.000 5.135 4.270
## .Im19 5.145 0.048 107.020 0.000 5.145 4.576
## .SAT_1 5.343 0.043 122.950 0.000 5.343 5.239
## .SAT_2 5.482 0.043 127.738 0.000 5.482 5.455
## .SAT_3 5.458 0.050 109.430 0.000 5.458 4.774
## .COM_A1 4.287 0.061 69.747 0.000 4.287 2.983
## .COM_A2 3.887 0.069 56.667 0.000 3.887 2.420
## .COM_A3 3.543 0.070 50.857 0.000 3.543 2.178
## .COM_A4 3.456 0.074 46.672 0.000 3.456 1.991
## .C_REP1 4.283 0.031 137.513 0.000 4.283 5.859
## .C_REP2 4.507 0.027 169.648 0.000 4.507 7.250
## .C_REP3 4.677 0.024 196.940 0.000 4.677 8.445
## .C_CR1 2.679 0.084 32.075 0.000 2.679 1.375
## .C_CR3 3.261 0.088 36.880 0.000 3.261 1.572
## .C_CR4 2.786 0.085 32.902 0.000 2.786 1.405
## Shoppng_Exprnc 0.000 0.000 0.000
## Store_Decoratn 0.000 0.000 0.000
## Luxury_Brands 0.000 0.000 0.000
## French_Culture 0.000 0.000 0.000
## Prdct_Assrtmnt 0.000 0.000 0.000
## Gourmet_Food 0.000 0.000 0.000
## Trendiness 0.000 0.000 0.000
## Professionalsm 0.000 0.000 0.000
## .Consmr_Stsfctn 0.000 0.000 0.000
## .Affctv_Cmmtmnt 0.000 0.000 0.000
## .Reprchs_Intntn 0.000 0.000 0.000
## .Cocretn_Intntn 0.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im20 0.644 0.059 10.840 0.000 0.644 0.288
## .Im21 0.708 0.056 12.626 0.000 0.708 0.377
## .Im22 0.557 0.061 9.070 0.000 0.557 0.239
## .Im3 0.214 0.024 8.796 0.000 0.214 0.123
## .Im4 0.108 0.024 4.485 0.000 0.108 0.059
## .Im5 0.747 0.049 15.220 0.000 0.747 0.423
## .Im11 0.817 0.055 14.817 0.000 0.817 0.625
## .Im12 0.309 0.040 7.805 0.000 0.309 0.239
## .Im13 0.390 0.045 8.754 0.000 0.390 0.269
## .Im6 0.431 0.041 10.534 0.000 0.431 0.300
## .Im7 0.234 0.041 5.682 0.000 0.234 0.161
## .Im9 1.199 0.080 15.053 0.000 1.199 0.657
## .Im1 0.089 0.047 1.918 0.055 0.089 0.050
## .Im2 0.302 0.041 7.314 0.000 0.302 0.183
## .Im10 0.116 0.019 6.156 0.000 0.116 0.150
## .Im14 0.067 0.019 3.618 0.000 0.067 0.090
## .Im17 0.094 0.045 2.085 0.037 0.094 0.061
## .Im18 0.523 0.054 9.593 0.000 0.523 0.268
## .Im16 0.602 0.050 11.943 0.000 0.602 0.416
## .Im19 0.345 0.043 7.943 0.000 0.345 0.273
## .SAT_1 0.262 0.034 7.733 0.000 0.262 0.252
## .SAT_2 0.333 0.033 9.973 0.000 0.333 0.329
## .SAT_3 0.798 0.056 14.348 0.000 0.798 0.610
## .COM_A1 0.757 0.058 12.960 0.000 0.757 0.367
## .COM_A2 0.778 0.065 11.906 0.000 0.778 0.301
## .COM_A3 0.881 0.070 12.504 0.000 0.881 0.333
## .COM_A4 0.876 0.075 11.720 0.000 0.876 0.291
## .C_REP1 0.179 0.016 11.295 0.000 0.179 0.335
## .C_REP2 0.051 0.010 4.947 0.000 0.051 0.133
## .C_REP3 0.131 0.009 14.061 0.000 0.131 0.429
## .C_CR1 1.048 0.113 9.309 0.000 1.048 0.276
## .C_CR3 1.369 0.130 10.572 0.000 1.369 0.318
## .C_CR4 1.377 0.122 11.292 0.000 1.377 0.350
## Shoppng_Exprnc 1.591 0.136 11.660 0.000 1.000 1.000
## Store_Decoratn 1.526 0.107 14.319 0.000 1.000 1.000
## Luxury_Brands 0.491 0.067 7.337 0.000 1.000 1.000
## French_Culture 1.008 0.089 11.380 0.000 1.000 1.000
## Prdct_Assrtmnt 1.683 0.117 14.435 0.000 1.000 1.000
## Gourmet_Food 0.657 0.049 13.327 0.000 1.000 1.000
## Trendiness 1.451 0.104 14.017 0.000 1.000 1.000
## Professionalsm 0.845 0.087 9.730 0.000 1.000 1.000
## .Consmr_Stsfctn 0.448 0.047 9.459 0.000 0.576 0.576
## .Affctv_Cmmtmnt 0.859 0.086 10.029 0.000 0.657 0.657
## .Reprchs_Intntn 0.237 0.022 10.939 0.000 0.667 0.667
## .Cocretn_Intntn 2.278 0.208 10.939 0.000 0.829 0.829
SEM Visualization
Model without Covariances
lavaanPlot(model = fit_SEM, node_options = list(shape = "box", fontname = "Helvetica"), edge_options = list(color = "steelblue4"), coefs = TRUE, sig = 0.05, covs = FALSE, digits = 2)
Model with Covariances
lavaanPlot(model = fit_SEM, node_options = list(shape = "box", fontname = "Helvetica"), edge_options = list(color = "steelblue4"), coefs = TRUE,sig = 0.05, covs = TRUE, digits = 2)